Alex的博客

由于博客程序改版,且org域名无法备案。 故此博客不再更新,以转为新 站博文家。 https://www.32e.top



用OpenCV调用IP摄像头(python版)

问题综述

最近在学习OpenCV,想要通过摄像头采集一些视频数据,但是无论如何也调用不了IPcamera的视频,网上的搜索方法用遍了也没有找出解决的方案。但是其中有一点提醒了我,要用到rtsp(百度百科:RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。)

于是官网上搜了一下rtsp的用法,居然真的有。

我的ip摄像头的ip是192.168.1.104,端口如上554,则总结起来就是rtsp://admin:password@192.168.1.104:554/11(其中因为用户名密码稍微涉及了一点隐私,所以就先不写出来了)

#以下是最常用的读取视频流的方法
import cv2
url = 'rtsp://admin:password@192.168.1.104:554/11'
cap = cv2.VideoCapture(url)
while(cap.isOpened()):  
    # Capture frame-by-frame  
    ret, frame = cap.read()  
    # Display the resulting frame  
    cv2.imshow('frame',frame)  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
# When everything done, release the capture  
cap.release()  
cv2.destroyAllWindows()  
但是最重要的是依然报错了!报错了!报错了!在官网上发现摄像头的rtsp貌似要手动开启,于是首先进入以下的界面(将你的摄像头的ip输入网页上面,例如我的就是192.168.1.104):

接下来点击电脑观看,并点击参数设置:
20180404200145344.png

再点击网络设置:
20180404200438387.png


再点击网络设置:
20180404200606105.png
则会弹出以下界面(这里我将我的摄像头的IP设置为静态ip(这个无所谓),将rtsp设置为开启):
20180404200858285.png
最后点击应用,记得这个时候将摄像头的电源拔掉,重新连接(间隔一定要超过30秒,30秒,30秒,否则可能会出问题,也不要问我为什么,因为我也不知道,这个是很多坑过后的经验)

#再将以下代码重新运行一下
import cv2
url = 'rtsp://admin:password@192.168.1.104:554/11'
cap = cv2.VideoCapture(url)
while(cap.isOpened()):  
    # Capture frame-by-frame  
    ret, frame = cap.read()  
    # Display the resulting frame  
    cv2.imshow('frame',frame)  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
# When everything done, release the capture  
cap.release()  
cv2.destroyAllWindows()  
最后成功出来你想要的摄像头的视频流。

这里就不跟大家截图了,涉及隐私问题啊。。。

最后如果有更好的想法,可以联系我。

浏览86  评论0  Alex于 2018-11-5 17:58
发言