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

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



