最近发现一篇好文章,仅供收藏

原文连接

需求

最近有一个需求,用户打开一个网页查看单位门口的一个海康摄像头,延时不能太大,该网页需要实现人脸识别功能。

分析

通过网上查看各方资料,以及自己的多次尝试,最终发现web端实现监控摄像头人脸识别最适合我们的方法是ffmpeg+websocket+jsmpeg实现视频流实时绘制到canvas上,然后使用TensorFlow.js+face-api.js读取canvas上的图像进行人脸识别。

实现步骤

1、 安装配置ffmpeg+websocket+jsmpeg

安装配置ffmpeg+websocket+jsmpeg网上的方法很多,ffmpeg主要用来读取海康监控摄像头的RTSP视频流并转码为二进制流推送到websocket服务上。
我用到的ffmpeg推送代码如下:

ffmpeg -rtsp_transport tcp -i "rtsp://admin:海康摄像头密码@192.168.1.4:554/h264/ch1/main/av_stream" -q 0 -f mpegts -codec:v mpeg1video -s 1000x600 -r 30 http://192.168.1.16:8081/socket密码

启动websocket的代码如下

node websocket-relay.js socket密码 8081 8082

注意socket密码上下统一。通过这个方法可以把RTSP的视频流推送到socket服务器。下面就是绘制视频流。

2、绘制视频流

绘制视频流使用的是jsmpeg,下面是我实现的方法:

<div><canvas id="video-canvas" style="display: block;"></canvas></div>
<script type="text/javascript">var canvasVideo = document.getElementById('video-canvas');var url = 'ws://192.168.1.16:8082/';var player = new JSMpeg.Player(url, {canvas: canvasVideo,audio: false,preserveDrawingBuffer:true});</script>

由于jsmpeg通过显卡进行绘制,因此如果不设置preserveDrawingBuffer:true这个参数会导致face-api.js无法读取canvas中当前的图像。

3、TensorFlow.js+face-api.js实现人脸识别

jsmpeg实时在canvas上重绘除了视频流,下面就看google的前端深度学习框架tensorFlow.js了,它可以调用Python中TensorFlow或keras已训练好的模型,也可以自己训练模型或者在已有模型上继续训练,face-api.js就是基于temsorFlow.js实现的一个人脸识别库。
通过face-api官方demo结合上面绘制好的canvas就可以实现视频中人脸识别了。具体教程还是得看官方教程比较复杂,我从官方demo中获取到的精华就是

        await changeFaceDetector(TINY_FACE_DETECTOR);faceMatcher = await createBbtFaceMatcher(1)

updateResults函数中读取canvas我是这样写的,输入的图像通过canvas中的toDataURL转为base64编码作为输入。

$("#imgUrlInput").attr("src", canvasVideo.toDataURL("image/png"));const inputImgEl = $("#imgUrlInput").get(0);const options = getFaceDetectorOptions()const results = await faceapi.detectAllFaces(inputImgEl, options).withFaceLandmarks().withFaceDescriptors()drawFaceRecognitionResults(results);

run函数中我使用了小脸识别,并且使用一张基图作为比对图。

结果

最终可以通过PC端访问也可以通过手机端访问查看摄像头视频并实现实时人脸识别,识别结果在服务器上存储。因为是实时人脸识别,因此我们还通过drawFaceRecognitionResults函数绘制了被识别人的信息实时显示在这个人的头顶上,如姓名、性别、科室、特长等信息。另外,网页打开的视频流运行一天延时依然能够保持在0.5s以内,这个还是比较满意的,之前试了几种方法延时都很大。

海康摄像头RTSP视频流-Web端人脸识别-ffmpeg+websocket+jsmpeg相关推荐

  1. 海康摄像头rtsp视频流html直播展示(适用360浏览器)和转rtmp流的一种配置方式

    背景:  因一个项目的需要,现有海康摄像头的rtsp流地址,想在web端进行监控视频直播展示,由于实际环境限制,自行搭建流媒体服务器将其转换为更为通用的rtmp流格式的方案无法落地:故最终仍使用rts ...

  2. 网络摄像头RTSP视频流WEB端实时播放实现方案

    IPC视频流怎么实时在WEB浏览器播放,视频流格式是RTSP. 下面我整理了自己实现的方案以及网上看到的一些方案 一.FFmpeg + nginx 将转 hls 通过 video.js 在支持h5浏览 ...

  3. 【每天一个没用的干货】海康摄像头rtsp流 不登录即播放

    众所周知, 通过VLC播放海康摄像头的视频流, 需要用rtsp://[IP地址]:554 然后输上用户名和密码 By chance 我从海康官网下载了软件VSPlayer(?你是不是对visual s ...

  4. [转载]海康摄像头sdk与web教程

    [转载]海康摄像头sdk与web教程 原文地址:https://blog.csdn.net/qq_35583089/article/details/80631069 查看原文 感谢大佬的分享,以下为原 ...

  5. rtsp_client 拉取海康摄像头的视频流

    RTSP的协议我这里就不做过多介绍了,网上随便百度一下,就能搜索到很好的文章.后续再贴上链接.我这里主要先记录一下海康的摘要认证. 海康的摘要认证主要是生成:response response的组成: ...

  6. 百度AI实现Web端人脸识别登陆-Springboot-Vue/element-ui

    3.8 人脸识别登陆Controller 1.效果图 后台获取的数据 {"face_token":"efb5996c1707850f81e884ef190c984b&qu ...

  7. unity通过rtsp协议实现海康摄像头的实时连接(一)

    一.前一段时间实现了通过winform调取摄像头的实时监控运行程序,详见源码:https://download.csdn.net/download/lsc_hei/10652399 二.现在需求改变, ...

  8. 利用flask解析海康摄像头视频

    利用flask解析海康摄像头视频 利用flask解析海康摄像头和大华摄像头的视频 一.安装依赖包 二.获取海康摄像头视频流 三.将视频流输出到Web页面 四. 创建HTML模板文件 利用flask解析 ...

  9. vue webRTC播放海康摄像头实时画面延迟1s内

    最终效果 主要参考地址,:https://blog.csdn.net/qq_45777115/article/details/118054927?spm=1001.2014.3001.5502 htt ...

  10. 使用海康摄像头保存的mp4文件,无法web端预览的问题,现已解决,记录一下

    最近在做一个项目,需要用到海康的录像视频,在自己开发的web端能够正常播放,格式是MP4的,本来以为是个简单的需求,没想到遇到了好多坑,特此记录: 首先,由于是联动系统,项目用到的录像文件存到的是另一 ...

最新文章

  1. Java8 Stream流递归,几行代码搞定遍历树形结构
  2. lingo 一些函数
  3. Javascript--Boolean运算符
  4. gulp插件gulp-ruby-sass和livereload插件
  5. c语言long a什么意思啊,英文long的中文是什么意思
  6. python做var模型_【Python金融量化】VaR系列(五):Copula模型估计组合VaR
  7. Eclipse中自动生成get/set时携带注释
  8. 【全开源商城小程序源码】ThinkPHP 5.1+带后台商城源码程序+带详细安装使用文档
  9. AXure破解授权码
  10. 简单了解冯·诺依曼体系结构
  11. 伦敦银实时行情中的引爆点
  12. Network Manager Applet(/usr/bin/nm-applet) wants access to the default keyring but it is locked
  13. js-for循环-9*9乘法表小练习
  14. Android 权限表,危险权限
  15. 高性能计算--HPCC--他人评述
  16. 晒晒我的厨艺修炼成果
  17. 初识Java之类和对象
  18. 【自动驾驶技术】优达学城无人驾驶工程师学习笔记(六)——Github与Markdown相关教程
  19. Diagonal distance in 23 dimensions
  20. 数字化门店转型| 酒吧管理系统 |酒吧小程序

热门文章

  1. Python 教程之再见 Excel你 Python 的spreadsheets电子表格
  2. 偏最小二乘法(SIMPLS---未简化)
  3. React开发chrome插件系列教程之插件开发环境搭建
  4. LoRa全链路打通教程01 - LoRa网关配置查看和修改方法详解(以ST P-NUCLEO-LRWAN3 套件为例)
  5. JS或jQuery获取当前屏幕宽度
  6. 记Dorado7学习(4)
  7. word转html,word转pdf
  8. js之金额大小写转换工具类(测试OK)
  9. Python playsound 播放MP3
  10. ydui的datetime日期选择组件