Node+vue实现视频中的人脸识别

哈希流星
• 阅读 9489

我们先来看下识别效果

Node+vue实现视频中的人脸识别

做人脸识别的思路

视频的人脸识别, 说白了也就是图片的识别, 因为视频的每一帧都是一张图片, 我们只要把每一帧的图片的人脸都识别出来, 那也就实现了视频的人脸识别。

总体思路是:截取视频中的图片,然后传到服务器端做识别,把识别结果(坐标和宽高)传回前端,前端做标记。

现在开始

  • 第一步: 我们需要把图片从视频中截取出来, 那现在就出现了三个问题, 1.怎么从视频是截图片;2.截图的频率是多少?3.怎么把图片转到服务器?

    • 回答第一个问题:使用Canvas的toDataURL方法,这个方法可以实时的把视频的画面,截成Base64图片编码,效率高,也方便。
    • 回答第二个问题:画面之帧率高于每秒约10-12帧的时候,人眼就会认为是连贯的。所以我们先取一个低值,每100毫秒截一次图
    • 回答第三个问题:用Ajax吗?当然可以,但是不太合适。对于这种前后端频繁传输数据的情况,用Websocket是最好的选择。前后端我们选择socket.io来实现
  • 第二步:Node端识别图片。在图像识别领域,opencv是一套标准的解决方案,但是opencv由是C++编写,也有JavaPython的接口,但是没有JS的接口,没办法了吗?当然不是,已经有大神出口了Node版的,叫node-opencvnode-opencv不是重写了opencv,只是在Node层调用C++层的cv,最终还是在C++里面运行的。

    • 安装opencvnode-opencv可以对照之前的文章-Mac下安装node-opencv,这个东西比较难安装,我也是折腾好久才安装上
    • 使用node-opencv识别图片中的人脸,核心代码如下:
    // 引入opencv
    const cv = require('opencv')
    // fileName就是我们前端的Base64传到后端生成真正图片的地址
    // cv.FACE_CASCADE参数为训练集,因为人脸只是cv的一个应用领域,他还可以识别车、动物、植物、大楼等物件,你传什么训练集,他就识别什么
    cv.readImage(fileName, function (err, im) {
        im.detectObject(cv.FACE_CASCADE, {}, function (err, faces) {
            // 为什么是复数呢?因为一张图中可能有多张脸,每一张脸都有四的值:x/y/width/height,这四的基本值
            console.log(faces)
        })
    })
    • 识别出坐标和宽高,就可以把这些信息通过websocket转到前端,前端做展示

具体的技术细节,请移步Github:人脸识别源码

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
不是海碗 不是海碗
3年前
人脸识别之人脸检测的重要性
在整个人脸识别的整个工程当中,必然是少不了人脸检测的,它承担着很重要的职责。首先摄像头在捕捉到的图像中,需要用人脸检测技术,检测这张图片当中是否有人脸,检测到人脸以及人脸的位置之后,才进行后续的特征提取、特征对比等步骤,最后才形成一个完整的人脸识别过程。
不是海碗 不是海碗
3年前
景区如何限流?竟然可以用人脸检测做到
我们可以通过人脸检测去进行景区限流。在景区门口放置摄像头,摄像头捕捉到游客的人脸图像,然后使用人脸检测技术,识别出图像中是否含有人脸,含有几张人脸,检测一张人脸,就在计数器上1。这样景区就可以通过客流量的统计,当达到最大客流量的时候,就停止进入,实现景区限流。
不是海碗 不是海碗
3年前
APISpace的 人脸检测API 它来啦~
人脸检测是指通过计算机视觉技术,从图像中识别、检测出人脸,并确定人脸的位置及大小。它是一种计算机图像处理技术,是计算机视觉领域的关键技术,可用于实现自动识别和跟踪人脸。
不是海碗 不是海碗
3年前
人脸检测:在公共交通场所监控中起什么样的作用?
在公共交通场所的监控系统中,人脸检测起着至关重要的作用。它被用来识别人脸,并检测未识别的人脸是否是真实的人脸。
不是海碗 不是海碗
3年前
人脸检测之身份识别你需要的那些事
人脸检测是进行身份识别的一个重要环节,因为它可以准确地识别出图像中的人脸,这样才能保证身份识别的准确性。
Jacquelyn38 Jacquelyn38
4年前
使用Vue封装一个实用的人脸识别组件
❝欢迎阅读本博文,本文主要讲述【使用Vue封装一个实用的人脸识别组件】,文字通俗易懂,如有不妥,还请多多指正。❞在这里插入图片描述前言人脸识别技术现在越来越火,那么我们今天教大家实现一个人脸识别组件。资源elementUIVue.jstrackingmin.jsfacemin.js源码由于我们
红橙Darren 红橙Darren
4年前
NDK开发前奏 - 实现支付宝人脸识别功能
1.基于AndroidStudio的opencv配置与使用先推荐一本书《计算机视觉算法与应用》,相信用过OpenCV的哥们都知道这是用来干啥的,这里我就不再啰嗦。只说一下他的应用领域:人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶等等。这次我们主要用它来做人脸识别,注意人脸
阿邹 阿邹
4年前
后台更新数据方案
当你遇到一些让你大吃一惊的解决方案的时候你不要惊讶,要学会低头去面试它,解决它。最近公司项目要做个人脸识别,类似于门禁卡之类的。本来这也没什么,因为我接到任务后第一反应是这样的逻辑:设备采集图片设备识别图片是否是人脸是人脸提交服务器进行身份识别服务器返回人物身份信息我觉得这样的逻辑就是有点耗时。然后根据公司需求是要做百度人脸的
Stella981 Stella981
4年前
C#实现基于ffmpeg加虹软的人脸识别
关于人脸识别目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸识别开发库时,也横向对比了三种库,包括在线识别的百度、开源的OpenCV和商业库虹软(中小型规模免费)。百度的人脸识别,才上线不久,文档不太完善,之前联系百度,官方也给了我基于Android的Example,但是不太符合我