Видео в OpenCV
В уроке рассмотрим историю появления видео и кинематографа. Также научимся открывать видео для его работы с OpenCV.
История появления видео
Видео — это набор взаимосвязанных изображений, которые сменяют друг друга. Первым успешным «видеопотоком» считают получаемое с помощью фенакистископа изображение.
Бельгийский физик Жозеф Плато, создатель фенакистископа, описывал свое изобретение так:
Аппарат состоит из картонного диска с прорезанными в нем отверстиями. На одной стороне диска нарисованы фигуры. Когда диск вращают вокруг оси перед зеркалом, то фигуры, рассматриваемые в зеркале через отверстия диска, представляются не вертящимися вместе с диском, а, наоборот, кажутся совершенно самостоятельными и делают движения, им присущие.
Позже появилась хронофотография. Это более близкий вариант к современному видео — набор последовательных кадров.
Ученые по всему миру работали над технологией хронофотографии. Но родоначальниками кино считаются братья Люмьер. Они были специалистами по технологиям фотофиксации изображений.
В 1895 году братья Люмьер разработали киноаппарат «синематограф» и сняли несколько роликов. Один из них — «Выход рабочих с фабрики Люмьер». Фильм был снят в марте 1895 года у ворот фабрики братьев Люмьер в городе Лион.
Со временем технологии развивались: появилась возможность записывать звук, размер камер уменьшались. Спустя век съемкой видео уже не удивишь, ведь камера есть на каждом телефоне.
Открытие файла с видео
Вернемся к работе с видео в среде OpenCV. Разберем, как открыть видеофайл.
Для работы будем использовать фрагмент фильма «Дом-монстр». Скачать фрагмент можно по ссылке.
Для открытия файла используем следующий код:
import cv2
file = "MH.mp4" # путь к файлу с картинкой
cap = cv2.VideoCapture(file)
while(cap.isOpened()):
ret,frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(33) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
В первую очередь пропишем путь к нашему файлу. Для этого используем file.
Основная часть программы начинается функцией. Функция VideoCapture принимает ссылку на файл. Цикл работает, пока воспроизводится файл. В этом цикле мы последовательно получаем кадры видео один за другим с помощью функции read. Она возвращает результат считывания кадра (ret — успешно/неуспешно) и сам кадр frame.
С помощью imshow показываем кадр в окошке. Функции cvWaitKey ждёт 33 миллисекунды и продолжает цикл, если не нажата клавиша q. Задержка 33 выбрано ориентировочно. Она соответствует 30 кадрам в секунду.
Смотрим результат работы программы и наслаждаемся.
Добавить комментарий