使用 HTML5, javascript, webrtc, websockets, Jetty 和 OpenCV 实现基于 Web 的人脸识...

这是一篇国外的文章,介绍如何通过 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://yq.aliyun.com/articles/546240

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。