首页| 论坛| 消息

标题:Qt编写视频监控系统(移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等)
作者:liudianwu
日期:2022-12-10 17:26
内容:

## 一、前言
得益于标准的onvif协议,各大监控厂商的设备都会支持onvif协议,在onvif协议中就包括了事件订阅机制,通过这个机制,可以拿到各种报警事件,比如移动侦测/遮挡报警/区域入侵/越界侦测/报警输入输出等,这样就不用自己去搞算法识别,相当于前端设备在后台配置好以后都自己运算掉,客户端这边就没有什么压力,分散在各个前端设备去处理,和有个高大上的名词叫什么边缘计算类似。如果在客户端这边处理这么多通道的算法识别,每个通道每秒钟起码要拿到一张图片去处理,运算压力非常大,而且很多算法默认走的CPU,搞得CPU占用很高,本来64个通道就几乎要把这个电脑的CPU榨干,哪里还有更多的空闲CPU留给算法运算,除非用专门的算法服务器,要么搞点简单的运算,要么强劲的配置,要么走fpga这种专用加速。如果是要从简单通用着手,兼容各大厂家的设备,就走onvif协议,拿到报警事件后,再通过onvif抓图或者直接打开的通道截图即可,这样就完美的组成了图文警情模块,一旦识别到某个摄像头报警,解析出对应的事件内容,抓图或者截图完成后,将文字信息和抓拍图片插入到图文警情列表中,一般都是最新的插入在最前面,当然也可以自行设置报警等级。
最初做的收到报警事件后就抓图写在一起,在只有几个通道或者分开报警的时候,还能处理,一旦通道多了,而且多个通道同时报警的话,很可能卡主,而且可能由于来不及处理导致丢掉一些事件,所以后面改成了专门线程处理,保证抓图完成后再插入到图文警情列表中。在线程中采用万能办法QMetaObject::invokeMethod和UI交互。
由于onvif事件有多种,而且不同厂家对应关键字对应的事件含义可能不一样,要做就做完美一点,所以又增加了事件字典表,对应内容 事件等级/唯一标识/报警字样/解除字样,用户如果有自己特有的可以自行打开这个字典表增加即可,而且这个字典表还可以用来过滤,比如不在这个字典表中的就不处理,按照用户需要的来。
常用几种事件字典:
1. 1,IsMotion,有人在移动,移动结束
2. 1,IsInside,有人在闯入,入侵结束
3. 1,LogicalState,开关量报警,报警结束
4. 1,State,开关量联动,联动结束
onvif主要功能:
1. 搜索设备,获取设备的信息比如厂家、型号等。
2. 获取设备的多个配置文件信息profile。
3. 获取对应配置文件的视频流地址rtsp,以及分辨率等参数。
4. 云台控制,上下左右移动,焦距放大缩小,相对和绝对移动。
5. 获取预置位信息,触发预置位。
6. 订阅事件,接收设备的各 ..

回复 发表
主题 版块