快捷搜索: 王者荣耀 脱发

cv2.VideoCapture()从网络摄像头取RTSP流失败的解决办法

需求:

将大华的网络摄像头连接到树莓派网口,取出视频进行处理。

问题与现象:

  1. 连接硬件
  2. 将树莓派有线网卡的ip固定设置于摄像头的同一网段。
  3. 将大华给的URL填到VLC里打开,可以播放视频
  4. 将大华给的URL填到cv2.VideoCapture()里,打不开视频。报错如下:
  5. 将参数删除,在运行报错如下:

分析

可能是由于端口的问题,上网搜索后,将大华给的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()

运行结果如下:

总结

经验分享 程序员 微信小程序 职场和发展