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

用Javascript实现人脸美容

 
阅读更多

本文可视为《HTML5实现人脸识别》的进阶,在人脸识别的基础上,我们将使用纯Javascript来实现如下的功能:

  • 识别和标注人脸以及五官

  • 对人脸进行美容

从本文的内容中,你将意识到,Javascript能做的,能实现的,远远比你想象的多。

演示

一、实现

1、人脸识别

Face.com有包括检测、识别在内的多个API接口,根据《HTML5实现人脸识别》一文,我们已经可以实现图片上传,并得到检测的结果,结果如下:


返回的参数

返回参数的详细解释参见http://developers.face.com/docs/api/return-values/,其中tags为多张照片的识别结果,每一个结果包括了耳朵、眼睛、嘴、鼻的中心位置,以及年龄、性别、是否佩戴眼镜、情绪、是否在笑等多种信息。

上传图片并请求接口的代码如下。

人脸标注

我们将根据人脸识别的结果对五官和面部进行标注。标注的方式有两种,一种是基于Canvas的绘图,一种是传统DIV方式标注。下面我们采用第二种方式,原理是在各个点上画一个3*3的DIV,DIV的背景色为红色,采用绝对定位。接口返回的五官数值为宽高所在点的百分比值,所以需要先进行换算。

标注五官的方法如下:

标注人脸区域的方法如下:

从结果来看,Face.com的检测结果非常精准。

人脸美容

对人脸我们采用两种效果叠加进行美容,分别是增加亮度和模糊度,这样可以让人脸看起来更白,皮肤更好。

1、 增加亮度

增加亮度其实非常简单,只需要在像素点的RGB通道上增加一个固定的值。代码如下:

2、 添加模糊效果

模糊效果较为复杂,平常我们常用到的包括均值模糊和高斯模糊。在HTML5Rocks上有一篇很棒的文章《IMAGE FILTERSWITH CANVAS》,里面有各种图像处理效果,我们可以直接应用里面的模糊效果(也即3*3的均值模糊)。


原图


锐化


索贝尔滤镜

代码如下:

最后对Canvas里的图像叠加两种效果的代码如下:

这样,我们完成了所有的代码。是不是相当的有成就感?看起来我们完成了相当新颖而酷炫的工作。

二、思考

1、 美容滤镜是否有其他实现的方式?

之前我介绍过CSS3滤镜,它有虚化和亮度调节两个方法可以方便直接的为图片添加滤镜效果,可以在《遇见CSS3滤镜》这篇文章里了解到。

2、我们还可以实现哪些美容效果?

1)去红眼

检测到眼睛位置后,我们可以采用一定范围内的滤镜,把这个范围内的红色转换为黑色,从而实现去红眼效果。

2)眼睛放大

检测到眼睛位置后,我们还可以采用一定的算法,实现眼睛放大的效果。要体验这个效果,可以下载百度魔图客户端体验。


百度魔图-强大的图片处理客户端

3)背景虚化

背景虚化效果基本和我们文中提到的效果是相反的方式。

3、 文中的效果是否还可以优化?

例如是否可以把文中美容的区域将正方形变为椭圆形,更为贴近人脸的形状?其实并不难,读者有兴趣可深入思考和实现。

4、 除了美容,我们还能完成什么样的功能?

Face.com提供了三个功能演示:人脸Tag、情景照片、人脸查找。对于应用开发者来说,从来不缺乏创意,例如Face.com图片检测返回的参数里包括图片旋转角度,我们可以利用这个参数实现图片批量自动旋转的功能(我最近在整理旅游的照片时就深深的理解了这个功能的便利性和必要性)。或者基于微博的图片爱情速配App?我期待更有创意和使用价值idea的出现。

扩展阅读

本文来自蒋宇捷的博客,转载请注明。

分享到:
评论

相关推荐

    JavaScript基于人脸识别的宿舍出入统计微信小程序源码.zip

    JavaScript基于人脸识别的宿舍出入统计微信小程序源码.zip使用说明 该程序在微信开发者工具里运行 JavaScript基于人脸识别的宿舍出入统计微信小程序源码.zip使用说明 该程序在微信开发者工具里运行 JavaScript基于...

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

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

    百度接口实现人脸识别(web)

    1. 隐私保护:在使用人脸识别技术时,必须遵守法律法规,尊重用户隐私,不得滥用。 2. 精度与误报:尽管人脸识别技术已相当成熟,但仍有误报可能,需考虑容错机制。 3. 计费模式:百度AI的接口使用通常是按调用次数...

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

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

    JavaEE实现人脸识别登录

    - **Ajax异步通信**:为了实现无刷新的用户体验,前端可能使用Ajax(Asynchronous JavaScript and XML)技术,将图像数据以JSON格式发送到后台Servlet。 - **MVC架构**:在JavaEE应用中,Model-View-Controller...

    java实现人脸注册及人脸登录!

    10. **用户交互界面**: 用户界面可能使用HTML、CSS和JavaScript创建,提供友好的用户体验,使得人脸注册和登录过程直观易懂。 总之,这个项目展示了一个集成人脸识别技术的Java Web应用程序,涵盖了从后端处理到...

    Python-faceapijs利用tensorflowjs在浏览器中进行人脸检测和人脸识别的JavaScriptAPI

    然后,使用JavaScript代码加载转换后的模型,并设置人脸检测和识别的参数。 5. **实时处理**:当用户上传或捕获一张图片时,使用face-api.js进行人脸检测,找到面部关键点,然后将这些信息传递给加载的模型进行识别...

    人脸采集-基于face-api.js实现人脸采集-javascript-项目源码-优质项目实战.zip

    人脸采集_基于face-api.js实现人脸采集_javascript_项目源码_优质项目实战

    微信小程序实现人脸识别(源码)

    7. **权限管理**:由于涉及用户隐私,使用人脸识别功能需要获取用户的授权。在微信小程序中,开发者需要在小程序配置文件中声明相关权限,并在运行时检查和请求用户许可。 8. **二次开发**:这个项目提供了一个基础...

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

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

    纯JS人脸识别服务,带手动抓拍、自动抓拍功能并获取人脸照片

    在本文中,我们将深入探讨如何使用纯JavaScript实现一个具有手动抓拍、自动抓拍功能的人脸识别服务,并能获取人脸照片。此服务还允许用户切换摄像头,为用户提供更灵活的操作体验。由于这是一个基于Web的应用,因此...

    javascript写的人脸识别程序

    在JavaScript领域,人脸识别技术是一种利用计算机视觉和深度学习来识别人脸特征的先进技术。...通过阅读和理解代码,你可以掌握如何在JavaScript环境中集成和使用人脸识别技术,这对提升你的Web开发技能非常有帮助。

    javascript前端人脸识别框架Tracking源码

    插件描述:通过分析tracking.js文件实现多人同时检测人脸并将区域限定范围内的人脸标识出来,并保存为图片格式。 注:本地预览请用火狐浏览器,chrome浏览器需要在服务端查看效果 tracking.js Tracking.js 是一个...

    web期末大作业 基于HTML+CSS+JavaScript实现的仿京东商城首页登录页源码

    web期末大作业 基于HTML+CSS+JavaScript实现的仿京东商城首页登录页源码 web期末大作业 基于HTML+CSS+JavaScript实现的仿京东商城首页登录页源码 web期末大作业 基于HTML+CSS+JavaScript实现的仿京东商城首页登录页...

    web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页源码

    web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页源码 web期末大作业 基于HTML+CSS+JavaScript实现的精美电商购物网站首页...

    基于JavaScript实现三角格子棋盘五子棋.zip

    基于JavaScript实现三角格子棋盘五子棋.zip基于JavaScript实现三角格子棋盘五子棋.zip基于JavaScript实现三角格子棋盘五子棋.zip基于JavaScript实现三角格子棋盘五子棋.zip基于JavaScript实现三角格子棋盘五子棋.zip...

    JavaScript实现轮播特效(代码)

    JavaScript实现轮播特效(代码)JavaScript实现轮播特效(代码)JavaScript实现轮播特效(代码)JavaScript实现轮播特效(代码)JavaScript实现轮播特效(代码)JavaScript实现轮播特效(代码)JavaScript实现轮播...

    用javascript实现的页面下雪功能

    在这个项目中,我们探讨的是如何用JavaScript来实现一个页面下雪的效果,并且允许通过代码修改使雪花颜色从白色转变为彩色。 首先,我们需要理解JavaScript的基础知识。JavaScript是一种脚本语言,主要用于客户端的...

    javascript 实现的进度条效果

    javascript 实现的进度条效果 javascript 实现的进度条效果

Global site tag (gtag.js) - Google Analytics