监控系统简介
浏览方式:
首先像说明书一样介绍都有哪些功能。
之后介绍各部分具体技术及测试结果。
监控端
在树莓派上运行,提供了简单的web界面。
使用方法和家用路由器类似:在指定ip登录 --> 配置摄像头 or 查看使用日志
可配置/ 查看项:
摄像头配置:
摄像头连接日志:
特别提供摄像头所支持的所有API说明(由django-rest_framework自动生成):
API线上试运行结果:
可看到返回的数据
服务端
制作了两部分,一部分是桌面程序,另一部分是web端。
桌面程序界面:
提供了简单的录像列表,下图用简单的树形结构描述了3个摄像头的所有视频记录。
用户双击后会打开FFmpeg的播放器界面直接播放视频。
多窗口播放示例:
下图中紫色的部分为树莓派夜视摄像头在我家里的录像。
工具栏里的炫酷技能:
查看人脸数据集
点击使用excel打开人脸特征点数据集。
图中的人脸大多是我从各种照片中随机采集的。
有了这些人脸特征,就可以从拍摄的视频中准确查找这个人(或者脸)出现的位置。
添加人脸可以从摄像头或者文件夹中直接导入
此处较为简单,未截图,不作详细介绍。
查找人脸
点击后将打开web浏览器。
程序将缓存每一次人脸搜索的结果。
以下是我之前的人脸查找记录:
点击右上角添加可以添加新的搜索条件,记录并返回搜索结果:
点击查看结果,可以得到人脸信息检索报告:
点击播放,可以唤起FFmpeg播放器直接播放:
播放器的使用效果另附有视频。
同步
中期答辩的时候将监控系统划分为4个大块:
除了直播部分我使用的是私有协议以外,其他部分功能都实现了。
同步部分的介绍如上图中所示。
技术采用
总体策略是使用C++完成性能部分,使用Python实现交互部分
-
视频流编解码基于FFmpeg
-
监控推流服务器基于Boost.ASIO模块,用以实现高性能并行传输
-
服务端拉流服务器基于Qt.Network模块,以提高开发速度
-
web端基于django框架,使用Python完成摄像头端的用户交互,同样使用Python实现服务端的用户交互及信息检索。
-
人脸识别使用开源库face_recognation
-
视频播放器基于FFplay,使用进程管道与其通信
测试结果
监控端静态画面带宽120kb左右,动态画面带宽达到230kb左右。
于项目中通过统计socket流量所得。
人脸识别准确率未测算。
按face_recognation的官方说法,对欧美人脸的识别率达到94%左右,对亚洲人的识别率相对较低。