Видео в 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 кадрам в секунду.

Смотрим результат работы программы и наслаждаемся.

Курсы Робикс, в которых изучается этот материал.

  1. Duckietown: робот с системой Автопилота
Сохраните или поделитесь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *