Сохранить кадры живого видео с отметками времени - PullRequest
0 голосов
/ 23 мая 2019

Я хочу снимать кадры видео с метками времени в режиме реального времени, используя Raspberry pi.Видео сделано через веб-камеру USB с использованием функции ffmpeg() в коде Python.Как сохранить кадры видео, которые в данный момент сделаны веб-камерой USB в Raspberry pi?

Я попытался использовать три функции opencv.cv2.VideoCapture для обнаружения видео, video.read() для захвата кадра и cv2.imwrite() для сохранения кадра. Вот код, библиотеки включены не для краткости.

  os.system('ffmpeg -f v4l2 -r 25 -s 640x480 -i /dev/video0 out.avi')
  video=cv2.VideoCapture('out.avi')
  ret, frame=video.read()
  cv2.imwrite('image'+str(i)+'.jpg',frame)     
  i+=1

Код сохраняеткадры видео, которые ранее были сделаны веб-камерой.Он не сохраняет кадры видео, которое в данный момент записывается веб-камерой.

1 Ответ

0 голосов
/ 23 мая 2019

Как вы можете прочитать здесь , вы можете получить доступ к камере с помощью camera=cv2.VideoCapture(0). 0 - это индекс подключенной камеры. Возможно, вам придется попробовать другой индекс, но обычно работает 0.
Подобно видеофайлу, вы можете использовать ret, frame = camera.read() для захвата кадра. Всегда проверяйте значение ret перед продолжением обработки кадра.
Далее вы можете добавить текст в рамку, как описано здесь . Вы можете использовать time или datetime для получения метки времени. Наконец сохраните кадр.

Примечание: если вы используете imwrite, вы быстро получите МНОГО изображений. В зависимости от вашего проекта вы можете также рассмотреть возможность сохранения кадров в виде видеофайла. Объяснил здесь .

Редактировать после комментария:

Вот как вы можете использовать time.time(). Сначала импортируйте модуль времени вверху вашего кода. time.time() возвращает количество секунд с January 1, 1970, 00:00:00. Таким образом, чтобы получить метку времени, вы должны сохранить время начала - когда программа / видео начнет работать.
Затем в каждом кадре вы вызываете time.time () и вычитаете время начала. Результат - время, в течение которого ваша программа / видео были запущены. Вы можете использовать это значение для отметки времени.

import time

starttime = time.time()

# get frame
timestamp = time.time() - starttime
cv2.putText(frame,timestamp,(10,500), font, 4,(255,255,255),2,cv2.CV_AA)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...