RTSP网络摄像头 WEB端播放 并实时人脸检测

(大的彩色图为摄像头的原始数据;左边灰色的视频是灰度化、缩放以后的视频,用来检测人脸信息,以提高效率;下边的人脸图片是检测到人脸信息后,截取人脸信息和后台比较然后回显)

项目地址:https://github.com/15225845996/rtsp-face

功能描述

1)浏览器实时播放摄像头信息

2)实时人脸检测(圈出视频中的人脸)

3)根据人脸位置截取人脸,与后台交互获取人脸信息并回填

4)定义可过期的Map,实现滤重(一秒内可能会有很多帧同一个人的人脸信息请求)

 

参考项目(参考rtsp浏览器播放):https://gitee.com/lllyl2012/rtspDemo

 

准备工作

安装FFmpeg(视频转码,浏览器不支持rtsp协议),并在PATH下配置环境(项目中会调用CMD命令)

 

1)官网(http://ffmpeg.org)下载后解压到任意目录,并将bin目录配置在PATH中即可

2)CMD运行:ffmpeg 不报错即可

 

项目介绍

1)项目结构

 

2)调用ffmpeg推流到指定的controller,由ConvertVideoPakcet实现ApplicationRunner接口,并在项目启动完成时运行run方法实现。

#命令示例:将指定rtsp地址的视频 推送到指定controllerffmpeg -rtsp_transport tcp -i "rtsp://admin:[email protected]:554/Streaming/Channels/101" -q 0 -f mpegts -codec:v mpeg1video -s 800x600 http://localhost/rtsp/receive

3)将接收(RtspController接收)到的流通过WebSocket推送到客户端。

4)客户端使用jsmpeg.min.js解码并输出到 canvas 元素 实现动态播放

5)改造jsmpeg.min.js 结合opencv.js实现动态人脸识别,具体见代码(jsmpeg.min.js 中的 CanvasRenderer.prototype.render)

 

总结:

动态识别人脸信息可根据需求灵活调整
优化方案:在硬件不变的情况下,可根据需求灵活调整。

如考勤场景,只需要检查入口范围,但是一般情况下摄像头获取到的影像要比入口大的多,所以可以根据实际场景将获取到的图片截取到只有入口大小,然后在根据情况缩放一下在检测(要保证缩放后也可以看清楚人脸),流畅度会有一个提升(因为参与校验的数据量变小了)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章