前言
工程上海康相机占据龙头老大位置,大多数工程中采用的是海康相机只有少部分是大华相机,因此在处理CV任务的时候很难避免与海康相机对接使用。
在这里我将选择以海康相机为例,讲解一下使用OpenCv连接海康相机获取视频画面。
情况一:项目和相机在同一网段
这种情况属于工程上的理想状态了,这个时候只要路由器和交换机不出问题(当然出问题了就喊运维人员前来处理了),使用OpenCv就可以很块的连接上相机了。
我们可以上海康官网或直接搜索海康RTSP格式(RTSP格式如下,大家可以自行搜索各部份的解释),我们需要从数据库中获取对应相机的:账号、密码和IP 然后即可组成海康设备的RTSP,使用OpenCv直接读取
rtsp = "rtsp://%s:%s@%s:554/cam/realmonitor?channel=1&subtype=1" % (username, password, ip) cap = cv2.VideoCapture(rtsp)
情况二:项目和相机不在同一网段
这种情况属于工程上的大多数状态了,这个时候往往是会有海康的接口进行获取RTSP,然后用OpenCv连接Rtsp。使用RTSP连接的话存在一下几种常见的意外情况:
- 相机端掉线(施工把线挖断了、欠网费了等)
- 本地网络断线(同上)
- RTSP本身传输协议存在的一些不完美的地方
- 可以连接上但是无法播放等原因
- 掉帧和花屏原因(不排除海康那边做的不够好)
我们可以获取到相机的indexcode (和海康人员协商索要),通过发送POST或Get请求得到RTSP,得到返回值中解析出RTS
通过接口传送相机indexcode获取此相机的RTSP并通过OpenCv连接示例如下: RTSP示例: rtsp://192.168.1.100:554/openUrl/MEyN5m0
VideoCap = cv2.VideoCapture(RTSP) ret, frame = VideoCap.read()
写在后面
在海康官网上有连接海康相机的SDK开发工具,也有python、Jave、C#和C++版本 ,大家可以自行对接海康SDK进行连接相机(SDK较为鸡肋)
作者:小小杨树