(大的彩色圖爲攝像頭的原始數據;左邊灰色的視頻是灰度化、縮放以後的視頻,用來檢測人臉信息,以提高效率;下邊的人臉圖片是檢測到人臉信息後,截取人臉信息和後臺比較然後回顯)
項目地址: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地址的視頻 推送到指定controller
ffmpeg -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)
總結:
動態識別人臉信息可根據需求靈活調整
優化方案:在硬件不變的情況下,可根據需求靈活調整。
如考勤場景,只需要檢查入口範圍,但是一般情況下攝像頭獲取到的影像要比入口大的多,所以可以根據實際場景將獲取到的圖片截取到只有入口大小,然後在根據情況縮放一下在檢測(要保證縮放後也可以看清楚人臉),流暢度會有一個提升(因爲參與校驗的數據量變小了)