-1

Opencv を使用して Linux を実行している IP カメラから rtsp ストリームを読み取ろうとしています。カメラは中国の Floureon IPC 360 です。顔認識コードを開発しようとしています。

次のコードを使用しています。

import numpy as np
import cv2

vcap = cv2.VideoCapture("rtsp://192.168.1.240:554/realmonitor?channel=0")
print(vcap)
while(1):
    ret, frame = vcap.read()
    print (ret,frame)
    cv2.imshow('VIDEO', frame)
    #cv2.imwrite('messigray.png',frame)
    cv2.waitKey(1)

$ python  w.py
<VideoCapture 0x7fc685598230>
(False, None)
Traceback (most recent call last):
  File "w.py", line 9, in <module>
    cv2.imshow('VIDEO', frame)
cv2.error: OpenCV(4.1.0) /io/opencv/modules/highgui/src/window.cpp:352: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

フレームが 'None' & (ret が False) であるため、cv2.imshow が失敗しています。

別のウィンドウで openRTSP を実行できます:

./openRTSP  -4 -P 10 -F cam_eight -t -d 8 rtsp://192.168.1.240:554/realmonitor?channel=0

これにより、再生できる素敵な mp4 ファイルが作成されます: 107625 Sep 12 19:08 cam_eight-00000-00010.mp4

OpenRTSP は、t (tcp) の有無にかかわらず動作します。また、admin:123456 資格情報を cv2.VideoCapture 行に提供しようとしましたが、これは openRTSP では必要ないようです。

cv2.VideoCapture が明らかに失敗している理由はありますか?

上記のコードのバリエーションを試しましたが、何も機能しないようです。カメラでONVIFを有効にしました

4

1 に答える 1