RTSP-поток и OpenCV (Python)

У меня есть потоковая передача IP-камеры на Linux через протокол rtsp и драйвер h264 linux. Я могу видеть видео в VLC со следующим адресом и портом:

rtsp://192.168.1.2:8080/out.h264

Однако, если я попытаюсь получить одно и то же видео для обработки OpenCV в Python 2.7.5 (MacOS X 10.9):

import cv
video = cv.CaptureFromFile('rtsp://192.168.1.2:8080/out.h264')

Я получаю следующую ошибку:

WARNING: Couldn't read movie file rtsp://192.168.1.2:8080/out.h264

Кажется, что-то довольно простое, но я застрял на нем. Спасибо.

Ответ 1

это работает для меня (используя opencv 2.4.9):

vcap = cv.VideoCapture("rtsp://192.168.1.2:8080/out.h264")

while(1):

    ret, frame = vcap.read()
    cv.imshow('VIDEO', frame)
    cv.waitKey(1)

Ответ 2

OpenCV полагается на ffmpeg или другие видеообъявления для обработки видеоформатов и протоколов IP-камер. В зависимости от вашей платформы и того, как вы установили OpenCV, у вас может не быть поддержки для rtsp.

Вы можете проверить поддержку видеообработки для установки OpenCV:

python -c "import cv2; print(cv2.getBuildInformation())"

Video I/O:
  DC1394 1.x:                  NO
  DC1394 2.x:                  NO
  FFMPEG:                      NO
     avcodec:                   NO
     avformat:                  NO
     avutil:                    NO
     swscale:                   NO
     avresample:                NO
  GStreamer:                   NO
  OpenNI:                      NO
  OpenNI PrimeSensor Modules:  NO
  OpenNI2:                     NO
  PvAPI:                       NO
  GigEVisionSDK:               NO
  Aravis SDK:                  NO
  UniCap:                      NO
  UniCap ucil:                 NO
  V4L/V4L2:                    NO/NO
  XIMEA:                       NO
  Xine:                        NO
  gPhoto2:                     NO

Ответ 3

Некоторое время боролся за это...

наконец, это получилось для меня.