我正在尝试使用 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'
cv2.imshow 失败,因为框架为“无”&(ret 为假)。
在一个单独的窗口中,我可以运行 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