树莓派从网络摄像头取流

需求:

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

问题与现象:

  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()   

运行结果如下:
在这里插入图片描述

总结

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐