#python #opencv
#python #opencv
Вопрос:
У меня возникли проблемы с получением видеопотока с имеющейся у меня IP-камеры. Я использую opencv для получения изображений из него. Вот код, который у меня есть:
import sys
import cv
video="http://prot-on.dyndns.org:8080/video2.mjpeg"
capture =cv.CaptureFromFile(video)
cv.NamedWindow('Video Stream', 1 )
while True:
# capture the current frame
frame = cv.QueryFrame(capture)
if frame is None:
break
else:
#detect(frame)
cv.ShowImage('Video Stream', frame)
if k == 0x1b: # ESC
print 'ESC pressed. Exiting ...'
break
На самом деле, эта штука работает, но для отображения изображений требуется слишком много времени. Я предполагаю, что это из-за этой ошибки от ffmpeg.
[mjpeg @ 0x8cd0940]max_analyze_duration reached
[mjpeg @ 0x8cd0940]Estimating duration from bitrate, this may be inaccurate
Я не эксперт по python, поэтому буду признателен за любую помощь!
Ответ №1:
Во-первых, mjpeg — это относительно простой видеоформат. Если вы прочитаете руководство по эксплуатации вашей IP-камеры, оно очень похоже на то, что вы можете найти, как отобразить видео в браузере с помощью небольшого кода JavaScript. На самом деле, если вы откроете ссылку на http://prot-on.dyndns.org:8080/video2.mjpeg в Google Chrome вы бы увидели видео без каких-либо проблем. (Возможно, вам не следует оставлять реальный URL вашей камеры)
Во-вторых, насколько я могу видеть, частота кадров вашей камеры довольно низкая. Это может быть связано с задержкой в Интернете или настройками вашей камеры. Сравните то, что вы видите в Chrome, с видео, отображаемым вашим кодом, если они имеют одинаковое качество, то это не проблема вашего кода.