需求:
将大华的网络摄像头连接到树莓派网口,取出视频进行处理。
问题与现象:
- 连接硬件
- 将树莓派有线网卡的ip固定设置于摄像头的同一网段。
- 将大华给的URL填到VLC里打开,可以播放视频
- 将大华给的URL填到cv2.VideoCapture()里,打不开视频。报错如下:
- 将参数删除,在运行报错如下:
分析
可能是由于端口的问题,上网搜索后,将大华给的url里的port改成554。成功运行!差点就去编译ffmpeg了。
参考
https://stackoverflow.com/questions/65833545/cv2-videocapture-only-return-port-missing-in-uri
import cv2
#主码流
#dad='rtsp://admin:a1234567@192.168.0.101:port/cam/realmonitor?channel=1&subtype=0'
#子码流:
#son='rtsp://admin:a1234567@192.168.0.101:port/cam/realmonitor?channel=1&subtype=1'
#测试url
test='rtsp://admin:a1234567@192.168.0.101:554/cam/realmonitor?channel=1&subtype=0'
cap=cv2.VideoCapture(test)
a=cap.isOpened()
print(a)
#得到视频的帧率
temp4=cap.get(cv2.CAP_PROP_FPS)
print("fps")
print(temp4)
while True:
ret,frame = cap.read()
cv2.imshow("video",frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
cap.release()
运行结果如下: