Play Svervice视觉库的一个主要组件,Face Detection
人脸检这一功能经常用到,我们可以使用android系统提供的API进行人脸检测,也可以使用OpenCv等三方库进行人脸检测
Google Play服务8.1中引入了视觉库,作为一个开发者,Face Detection让你可以更容易的通过分析视频或图像来定位人脸(face)。
如果想了解更多请查看 官方文档
使用方法:
build.gradle文件中添加依赖库,8.1以上版本可以根据自己需求添加
1 | dependencies { |
AndroidManifest.xml的Application 中添加如下代码
1 | <meta-data android:name="com.google.android.gms.vision.DEPENDENCIES" android:value="face"/> |
接下来我们获取位图对象,这是实例具体可以根据自己的方式获取Bitmap对象
1 | InputStream stream = getResources().openRawResource( R.raw.face ); |
下面正式进入人脸检测阶段:
1 | import com.google.android.gms.vision.face.Face;//导入人脸对象 |
通过上面代码我们获取到了人脸信息,并将之绘制到图片上去,别急还有其他功能,通过人脸对象我们还可以获取到人脸关键点的信息,
共十二个关键点信息:左右眼 左右耳 左右耳廓尖 鼻子基部 左右脸颊 嘴的左右角 嘴基部
注:关键点信息的多少取决于人脸角度
主要代码如下:
1 | //通过Face对象获取人脸关键点集合 |
上面我们知悉了人脸检测,人脸关键点的获取,接下来我们学习额外人脸数据的获取,通过这些数据我们可以判断人练动作,是不是很有意思!!!
getIsSmilingProbability(),getIsLeftEyeOpenProbability()和getIsRightEyeOpenProbability()方法会返回一个0.0到1.0的浮点数,你可以用其确定眼睛是否睁开或者检测到的这个人是否在笑。返回值越接近1.0,这个人就越有可能在小或者他的左右眼越有可能是睁开的。
你也可以通过检查图像的欧拉值找出一张图像中人脸在Y轴和Z轴上的角度。Z欧拉值的一直都能收到。但是,要想接受到X值你必须使用精确模式。在下面的代码片段中你会看到如何获取这些值。
1 | for( int i = 0; i < mFaces.size(); i++ ) { |
- 欧拉Y角度参考
1 | 欧拉 Y 角度 可见的关键点 |