这是一篇国外的文章,介绍如何通过 WebRTC、OpenCV 和 WebSocket 技术实现在 Web 浏览器上的人脸识别,架构在 Jetty 之上。

实现的效果包括:

还能识别眼睛

人脸识别的核心代码:

页面:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<div>
    <video id="live" width="320" height="240" autoplay style="display: inline;"></video>
    <canvas width="320" id="canvas" height="240" style="display: inline;"></canvas>
</div>
  
 <script type="text/javascript">
    var video = $("#live").get()[0];
    var canvas = $("#canvas");
    var ctx = canvas.get()[0].getContext('2d');
  
    navigator.webkitGetUserMedia("video",
            function(stream) {
                video.src = webkitURL.createObjectURL(stream);
            },
            function(err) {
                console.log("Unable to get video stream!")
            }
    )
  
    timer = setInterval(
            function () {
                ctx.drawImage(video, 0, 0, 320, 240);
            }, 250);
</script>

后台:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class FaceDetection {
  
    private static final String CASCADE_FILE = "resources/haarcascade_frontalface_alt.xml";
  
    private int minsize = 20;
    private int group = 0;
    private double scale = 1.1;
  
    /**
     * Based on FaceDetection example from JavaCV.
     */
    public byte[] convert(byte[] imageData) throws IOException {
        // create image from supplied bytearray
        IplImage originalImage = cvDecodeImage(cvMat(1, imageData.length,CV_8UC1, new BytePointer(imageData)));
  
        // Convert to grayscale for recognition
        IplImage grayImage = IplImage.create(originalImage.width(), originalImage.height(), IPL_DEPTH_8U, 1);
        cvCvtColor(originalImage, grayImage, CV_BGR2GRAY);
  
        // storage is needed to store information during detection
        CvMemStorage storage = CvMemStorage.create();
  
        // Configuration to use in analysis
        CvHaarClassifierCascade cascade = new CvHaarClassifierCascade(cvLoad(CASCADE_FILE));
  
        // We detect the faces.
        CvSeq faces = cvHaarDetectObjects(grayImage, cascade, storage, scale, group, minsize);
  
        // We iterate over the discovered faces and draw yellow rectangles around them.
        for (int i = 0; i < faces.total(); i++) {
            CvRect r = new CvRect(cvGetSeqElem(faces, i));
            cvRectangle(originalImage, cvPoint(r.x(), r.y()),
                    cvPoint(r.x() + r.width(), r.y() + r.height()),
                    CvScalar.YELLOW, 1, CV_AA, 0);
        }
  
        // convert the resulting image back to an array
        ByteArrayOutputStream bout = new ByteArrayOutputStream();
        BufferedImage imgb = originalImage.getBufferedImage();
        ImageIO.write(imgb, "png", bout);
        return bout.toByteArray();
    }
}

详细的实现细节请阅读英文原文:

http://www.smartjava.org/content/face-detection-using-html5-javascript-webrtc-websockets-jetty-and-javacvopencv

转载于:https://www.cnblogs.com/meetrice/p/4967783.html

使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识别相关推荐

  1. 【OpenCV图像处理入门学习教程六】基于Python的网络爬虫与OpenCV扩展库中的人脸识别算法比较

    OpenCV图像处理入门学习教程系列,上一篇第五篇:基于背景差分法的视频目标运动侦测 一.网络爬虫简介(Python3) 网络爬虫,大家应该不陌生了.接下来援引一些Jack-Cui在专栏<Pyt ...

  2. OpenCV中视频操作及人脸识别案例

    目录 OpenCV中视频操作及人脸识别案例 视频操作 视频读写 从文件中读取视频并播放 保存视频 小结 视频追踪 meanshift Camshift 算法总结 小结 案例:人脸案例 人脸识别基础 实 ...

  3. 用python实现人脸识别输出画像_这个是利用OpenCV TensorFlow来实现图片人脸识别

    安装 dlib dlib 是一个基于 C++ 编写的扩展库,包含有许多常用的机器学习算法以及图像处理函数. 并且还支持大量的数值计算,如矩阵.大整数随机运算等. 但是在编译安装 dlib 之前我们还需 ...

  4. 开源毕业设计:基于嵌入式ARM-Linux的应用OpenCV和QT实现的人脸识别系统(源码+论文)

    毕业一载有余,把毕业设计作品分享一下,希望能帮助到有需要的同学们. 资料获取: 帮助/答疑/辅导...等请联系博主,请点如下链接: linux_face.txt · zengzr/share_cont ...

  5. 【毕业设计_课程设计】基于opencv、dilb的员工人脸识别考勤系统

    文章目录 0 项目说明 1 需求分析 2 总体设计 3 详细设计 4 效果展示 5 实验心得 6 项目源码 7 最后 0 项目说明 基于opencv.dilb的员工人脸识别考勤系统 提示:适合用于课程 ...

  6. 基于百度云人脸识别API与opencv的人脸识别系统

    基于百度云人脸识别API与opencv的人脸识别系统 简介 弄这个东西是因为参加了学校的项目,第一次开发做的不是很好. 本系统是基于百度云人脸识别API.opencv级联器.PYQT5进行开发.百度云 ...

  7. 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战

    基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕实战 基于opencv tensorflow2.0开发的人脸识别锁定与解锁win10屏幕 前言 运行python环境 ...

  8. opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...

    " 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...

  9. python3+opencv+tkinter开发简单的人脸识别小程序

    学校里有门图像处理的课程最终需要提交一个图像处理系统, 正好之前对于opencv有些了解,就简单的写一个人脸识别小程序吧 效果图如下 笔者IDE使用Pycharm,GUI编程直接使用内置的tkinte ...

最新文章

  1. 呼和浩特机器人光缆设备_工业机器人最坚固配件,虐它千万次,性能依旧
  2. Mysql之drop、truncate和delete的区别
  3. PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法
  4. 互联网java常用框架_来,带你鸟瞰 Java 中4款常用的并发框架!
  5. linux kernel and user space通信机制,Linux内核空间与用户空间通信机制地研究.doc
  6. uploadify scriptData参数无法传参的问题
  7. HAproxy + Keepalive实现LDAP代理服务
  8. cuda Synchronization
  9. 《相关性准则——大数据时代的高效能之道》一一2.3 数字信息
  10. 算法学习笔记 全源最短路径Johnson算法(用于稀疏图和有负边的图)
  11. 冯扬文:基于数据仓库的集装箱运价信息集成研究
  12. webshell流量隐蔽CS和MSF联动
  13. 2018年下半年信息系统项目管理师考试真题附答案解析(5)
  14. 一文搞懂经济数据中M0 M1 M2
  15. 串口调试助手源码java_Java串口调试助手工程源码
  16. Android自动背光调节机制分析
  17. 这6款APP和游戏,是苹果选出的2019年年度最佳
  18. Windows编程 第四回 Windows程序的生与死(下)
  19. 依赖包存在,但是仍依然报找不到包的问题
  20. 云主机1元简直就不是骗人的,大家不要上当受骗了呢

热门文章

  1. Linux服务器的攻防技术
  2. LeetCode 5364. 按既定顺序创建目标数组
  3. lvgl的区别 qt_LVGL分析-画面刷新
  4. 计算机未来的发展趋势三百字,数字媒体毕业论文5000字_大专毕业论文5000字_计算机类毕业论文5000字文库...
  5. java线程状态_java并发编程之线程状态
  6. python打砖块游戏算法设计分析_python小游戏--打砖块的实现与讲解(python自学总结系列)...
  7. 11 java基础之继承:区分子类方法中变量的三种变量
  8. 近24小时以太坊上的DEX交易量超过150亿美元
  9. 《如何搭建小微企业风控模型》第十三节 额度公式 节选
  10. 《如何搭建小微企业风控模型》第十二节 模型检验 节选