`
mixer_a
  • 浏览: 364679 次
社区版块
存档分类
最新评论

用HTML5实现人脸识别

 
阅读更多

注:今天HTML5小组沙龙《论道HTML5》分享时有朋友问到一个问题,getUserMedia是否会支持人脸识别,我当时的答案是这应该是应用来实现的功能,而不是规范要完成的工作。而我之前在网上看到过一篇关于getUserMedia和人脸识别的相关文章,觉得很有趣,正好趁这个机会分享给大家。

译自:http://www.raymondcamden.com/index.cfm/2012/4/6/Face-detection-with-getUserMedia

转载请注明出处:蒋宇捷的博客

现代Web”不断发展出不少有趣的API,但你并不会在大多数项目中使用到所有的内容。例如我一直特别关注Canvas特性。它对游戏和绘图意义重大 - 但是仅此而已。它并不是一个不好的特性,我只是不会经常用到它。每当看到一些开发中酷炫的新功能,我的大脑里都会思考它们可以产生哪些实际用途。显然对你有价值的内容可能对我来说并不一定,但搞清楚我如何实际使用一个功能是我学习它的一部分。

其中的一个特性是getUserMediaW3C规范)。它是一个JavaScript API,可以让你访问(需要权限)用户的网络摄像头和麦克风。目前OperaChrome(我相信现在的版本18可以支持,但是你可能需要使用Canary。你还需要启用它。这儿有一个说明。)一旦你启用了getUserMedia,它使用起来相当简单。这里有一个快速的访问请求:

getUserMedia的第一个参数是类型。根据规范,这应该是一个对象,你可以启用音频、视频,或两者兼而有之,像这样:{audio:true, video:true}然而在我的测试中,传递一个字符串“video”也可以正常工作。你将看到的演示基于另一个演示,所以代码来自于一个较早的Chrome下的版本。第二个和第三个参数是操作成功和失败的回调函数。

你可以看到操作成功的事件处理函数将视频流分配给HTML5 Video标签。最酷的是,一旦运行起来,你就可以使用Canvas API来拍照。对于这个演示,可以看看Greg MiernickiDemo

http://miernicki.com/cam.html

如果这个Demo无法工作,可以按照下面的说明来开启getUserMedia支持后再次进行尝试。(虽然我打算分享一些屏幕截图,所以如果你只是想继续阅读,那也没关系。)

基于Greg的Demo,我突然想到可以用网络摄像头的照片做一些很酷的东西。我记得Face.com有一个非常酷的API来解析脸部的图片。(我11月曾经在博客里写了一个ColdFusion例子。)然后我在想,是否我们能把GregDemoFace.comAPI结合起来做一些基本面部识别的Demo


这有这几个重大问题。第一 - Face.com有一个很好的REST API,我们将如何从JavaScript应用程序里面来调用它?其次 - Face.com需要你可以上传图片,或给它一个网址。我知道可以把一个Canvas图片发送给服务器,并通过我的后台上传到Face.com,但有没有办法绕过服务器来把图片发送给这个API

第一个实际上并不是问题。Face.com实现了CORS(跨域资源共享)。CORS系统基本上可以让服务器暴露给其它域上文件的Ajax调用。这是一个伟大的功能,我希望更多的服务能够使用它。

更复杂的问题则是如何把画布上的数据发送到Face.com(宇捷注:还可以参考我的这篇文章《如何使用HTML5实现拍照上传应用》)。我如何模拟文件上传?这里有另一个很酷的新技巧 - FormdataColdFusion的研究员Sagar Ganatra关于这个话题有一篇很棒的博客下面展示了我如何使用它:

让我们一行行来看这段代码。首先 - 我需要从画布对象获取二进制数据。有几种方法可以实现,但是我尤其想要一个二进制的Blob请注意dataURIToBlob方法。这是几周前我从StockOverflow上发现的。

我创建了一个新的formdata对象,然后简单地设置了自己所需的值。你可以看到我为发起的API请求添加了几个参数,但关键在于文件名和文件对象本身。

接下来你可以看到简单的jQuery Ajax调用。Face.com有多种选择,但我基本只要求它返回预测年龄、性别、情绪,是否面带微笑以及戴着眼镜。就是这些。我得到了一个很棒的JSON包,并且对它进行了格式化。

现在显然API并不完美。我获得了使用API一些不同程度的结果。有时相当准确,有时相反。但是总体来说,这相当酷。这里有一些实际测试的图片,看起来有点“可怕”。


识别结果:neutral(无表情)


识别结果:happy(开心)


识别结果:surprised(惊讶)


识别结果:sad(悲伤)

好了,准备自己亲自来试试?只需点击下面的演示按钮。如果需要源代码,可以直接在页面上查看!这是100%的纯客户端代码。


如果想从另外一方面了解getUserMedia,可以看看这些例子:



分享到:
评论

相关推荐

    人脸识别HTML实现

    在本文中,我们将深入探讨如何使用HTML来实现人脸识别功能,主要基于百度提供的API接口。人脸识别是一种先进的技术,它能够通过分析图像或视频流中的面部特征,进行身份验证或识别个体。这种技术在安全、监控、社交...

    基于HTML5 的人脸识别活体认证的实现方法

    在本文中,我们将探讨如何利用HTML5实现基于浏览器的简单人脸识别活体认证系统。HTML5的媒体元素(如`<video>`和`<canvas>`)以及JavaScript库clmtrackr.js是实现这一功能的关键。 首先,HTML5的`<video>`元素用于...

    基于百度api使用js实现的人脸识别Demo.zip

    在本文中,我们将深入探讨如何基于百度API使用JavaScript实现人脸识别技术。人脸识别是一种计算机视觉技术,它能够通过分析图像或视频中的面部特征来识别人的身份。百度提供了强大的人脸识别API,为开发者提供了一种...

    人脸识别考勤系统,用 Python 实现人脸识别考勤系统

    此外,还引入了 p5.js 这个JavaScript库,它提供了一套丰富的绘图功能,可以用于在网页上实时处理和显示人脸图像,实现人脸检测和追踪的可视化。 后端部分: 后端主要由 Python 和 Flask 框架构建。Flask 是一个轻...

    基于HTML5的人脸识别技术

    实现人脸识别的关键步骤如下: 1. **启用MediaStream**:用户首先需要在Chrome浏览器的地址栏输入`about:flags`,找到“启用MediaStream”选项并启用,然后重启浏览器。 2. **访问摄像头**:通过调用`navigator....

    asp.net+websocket+emgucv实现人脸识别完整

    【标题】:“asp.net+websocket+emgucv实现人脸识别完整”这个项目是基于ASP.NET技术,结合WebSocket通信协议和EMGU CV库构建的人脸识别系统。它提供了一个完整的示例,包括Web客户端(NewFaceWeb)和服务端...

    人脸识别源代码-Python实现

    本项目包含了一些人脸识别相关的例程。包括了人脸检测,人脸识别,人脸打码等。 .py是python的可执行程序。 .html是做的一个UI界面。 .xml是人脸识别的库。 .jpg是人脸识别时对照的人脸照片。

    javaEE实现人脸识别登录

    在本文中,我们将深入探讨如何使用JavaEE与百度AI的人脸识别技术来构建一个基于面部特征的登录系统。首先,让我们理解人脸识别的基本概念,然后详细阐述实现这一功能所需的步骤和技术。 **人脸识别技术** 人脸识别...

    基于百度AI人脸识别的考勤系统设计与实现.pdf

    本文设计并实现了一种基于人脸识别的高校学生考勤系统,借助百度平台开放的人脸识别API接口实现人脸考勤打卡。系统的开发采用MVC设计模式,遵循软件开发高內聚低耦合的原则,使系统层次结构清晰,便于后期维护。 ...

    java web实现人脸识别的工具

    在Java Web开发中,实现人脸识别是一项复杂而有趣的任务,它涉及到计算机视觉、图像处理和机器学习等领域的技术。本项目提供了一种简单的解决方案,通过集成特定的库和工具,使得在Web应用程序中进行人脸识别成为...

    基于人脸识别的门禁管理系统源码(Python+Django).zip

    基于人脸识别的门禁管理系统源码(Python+Django) 基于人脸识别的门禁管理系统源码(Python+Django) 基于人脸识别的门禁管理系统源码(Python+Django) 基于人脸识别的门禁管理系统源码(Python+Django) 基于...

    HTML5 的人脸识别活体认证实例

    在这个"HTML5的人脸识别活体认证实例"中,我们将探讨HTML5如何与现代技术结合,实现人脸识别和活体检测这一前沿功能。 人脸识别是一种生物特征识别技术,通过分析人脸的形状、结构和特征来确认或验证一个人的身份。...

    人脸识别代码(用HTML调用Python)

    这个项目的核心在于使用Python实现人脸识别算法,并通过HTML页面与用户进行交互。下面将详细介绍其中的关键知识点: 1. **人脸识别技术**:人脸识别是一种生物特征识别技术,通过分析比较人脸图像的特征信息来确定...

    毕业设计:人脸识别系统设计与实现毕业设计代码

    在本毕业设计项目中,我们将探讨如何设计与实现一个人脸识别系统,主要依赖于百度云的人脸识别接口。这个系统可以广泛应用于安全监控、身份验证、社交媒体等多种场景,具有较高的实用价值。以下是对该设计与实现过程...

    基于百度API的使用js实现的人脸识别Demo

    在本项目中,“基于百度API的使用js实现的人脸识别Demo”是一个利用百度云的人脸识别技术,并通过JavaScript编程语言创建的简易应用示例。这个Demo旨在帮助开发者理解和实践如何在网页环境中集成百度的人脸识别服务...

    基于百度人脸API的人脸识别组件

    在IT行业中,人脸识别技术已经成为一个热门领域,尤其在安全验证、智能门禁、社交媒体和个性化推荐等应用中占据重要地位。本项目“基于百度人脸API的人脸识别组件”旨在利用百度强大的人工智能技术,为开发者提供一...

Global site tag (gtag.js) - Google Analytics