Начало работы с видео

OpenCVBeginner
Практиковаться сейчас

Введение

Добро пожаловать в этот практикум по работе с видео с использованием OpenCV-Python! OpenCV (Open Source Computer Vision) — это мощная библиотека, разработанная для обработки изображений, машинного обучения и компьютерного зрения. В этом практикуме мы сосредоточимся на том, как работать с видео в OpenCV-Python.

Чтение видео и сохранение кадра

Для захвата видео необходимо создать объект VideoCapture. Вот пример чтения видео и сохранения каждого кадра в папку frame:

Путь к видео: /home/labex/project/video.mp4

Путь к файлу: /home/labex/project/read_video.py

Откройте файл read_video.py. Затем введите следующий код.

import cv2
import os

## Проверяем, существует ли папка 'frame'. Если нет, то создаем ее.
folder = os.path.exists('frame')
if not folder:
 os.makedirs('frame')
 print('new folder...')
 print('OK')
else:
 print('There is this folder!')

## Номер кадра
number = 0

## Создаем объект VideoCapture
cap = cv2.VideoCapture('video.mp4')

while True:
    ## Читаем кадр из видео
    ret, frame = cap.read()

    ## Увеличиваем номер кадра
    number = number + 1
    if ret:
        ## Сохраняем кадр
        cv2.imwrite(f"./frame/save{number}.jpg", frame)

    ## Выходим из цикла
    else:
        break

print('Each frame has been saved to the frame folder')

print('Video read successfully!')

## Освобождаем объект VideoCapture
cap.release()

В этом примере мы создаем объект VideoCapture, передав путь к видео-файлу, который мы хотим прочитать. Затем мы используем цикл while для чтения каждого кадра видео с помощью метода read(). Если кадр успешно прочитан, мы используем метод imwrite() для сохранения кадра. В конце мы освобождаем объект VideoCapture.

Вы можете выполнить следующую команду в терминале:

python /home/labex/project/read_video.py

Или вы можете просто нажать на кнопку, как показано на картинкеRun Python File в правом верхнем углу для выполнения.

После этого дождитесь, пока в терминале появится сообщение "Video read successfully!", и вы увидите изображения каждого кадра в папке frame.

Запись и сохранение видео

Для записи и сохранения видео необходимо создать объект VideoWriter. Вот пример того, как записать и сохранить видео:

Путь к видео: /home/labex/project/video.mp4

Путь к файлу: /home/labex/project/write_video.py

Откройте файл write_video.py. Затем введите следующий код.

import cv2

## Создаем объект VideoCapture
cap = cv2.VideoCapture('video.mp4')

## Получаем размер кадра видео и частоту кадров
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))

## Создаем объект VideoWriter
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))

while True:
    ## Читаем кадр из видео
    ret, frame = cap.read()

    if ret:
        ## Обрабатываем кадр
        #...

        ## Записываем обработанный кадр в выходное видео
        out.write(frame)

    else:
        break

print('Video save successfully!')

## Освобождаем объекты VideoCapture и VideoWriter
cap.release()
out.release()

В этом примере мы создаем объект VideoCapture, передав путь к видео-файлу, который нужно прочитать. Затем мы получаем размер кадра видео и частоту кадров с помощью метода get(). Далее мы создаем объект VideoWriter, передав имя выходного файла, код fourcc, частоту кадров и размер кадра. Код fourcc — это четырехбайтный код, используемый для указания видеокодека. В этом примере мы используем кодек XVID.

Затем мы используем цикл while для чтения каждого кадра видео с помощью метода read(). Если кадр успешно прочитан, мы обрабатываем его (например, применяем фильтры) и записываем в выходное видео с помощью метода write() объекта VideoWriter. В конце мы освобождаем объекты VideoCapture и VideoWriter.

Вы можете выполнить следующую команду в терминале:

python /home/labex/project/write_video.py

Или вы можете просто нажать на кнопку, как показано на картинкеRun Python File в правом верхнем углу для выполнения.

После этого дождитесь, пока в терминале появится сообщение "Video save successfully!", и вы увидите выходное видео с именем output.avi в папке проекта. Однако текущая среда не поддерживает просмотр видеофайлов. Вам нужно будет скачать файл на локальный компьютер, как показано ниже, и затем просмотреть его с помощью видеоплеера.

Download Video File

Резюме

Поздравляем! Теперь вы знаете, как читать, отображать, записывать и сохранять видео с использованием OpenCV-Python. С этими базовыми навыками вы можете приступить к изучению более продвинутых методов и приложений компьютерного зрения.

Не стесняйтесь расширять этот учебник, попробовав разные форматы видео, применив фильтры к кадрам или поэкспериментировав с отслеживанием и обнаружением объектов. Возможности безграничны!