HUAWEI ML Kit提供的人脸检测服务支持检测人脸特征,包括人脸轮廓,眉毛、眼睛、鼻子、嘴巴、耳朵等部位在面部的位置,以及人脸偏转角度等信息,并将检测结果返回给开发者的App。
在这个codelab中,您将完成一个人脸检测的demo工程。
点击以下链接,下载codelab的demo工程包:
Demo工程包
解压下载的压缩包到本地磁盘(比如D:\mlkit-demo)。
如果显示以下信息,表示工程同步成功:
如果提示"Unknown Device"或者"No device",请在CMD命令窗口执行以下命令重启adb服务:
adb kill-server
adb start-server
在此步骤中,我们将给App设置摄像头权限。将以下配置内容添加至AndroidManifest.xml文件:
AndroidManifest.xml
<!--todo step 1: add authorization of camera -->
<uses-feature android:name="android.hardware.camera" /> <uses-permission android:name="android.permission.CAMERA"/>
在此步骤中,我们将在App中创建人脸分析器。将以下内容添加至LiveImageDetectionActivity类中的createFaceAnalyzer方法:
LiveImageDetectionActivity.java
// todo step 2: add on-device face analyzer
MLFaceAnalyzerSetting setting = new MLFaceAnalyzerSetting.Factory()
.setFeatureType(MLFaceAnalyzerSetting.TYPE_FEATURES)
.setPerformanceType(MLFaceAnalyzerSetting.TYPE_SPEED)
.allowTracing()
.create();
analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer(setting);
analyzer.setTransactor(new FaceAnalyzerTransactor());
在此步骤中,我们将在App中增加启动摄像头的功能。将以下内容添加至LiveImageDetectionActivity类的createLensEngine方法中:
LiveImageDetectionActivity.java
// todo step 3: add on-device lens engine
LensEngine mLensEngine = new LensEngine.Creator(context, analyzer)
.setLensType(lensType)
.applyDisplayDimension(1600, 1024)
.applyFps(25.0f)
.enableAutomaticFocus(true)
.create();
// 请自行实现SurfaceView控件的其他逻辑。
SurfaceView mSurfaceView = findViewById(R.id.surface_view);
try {
lensEngine.run(mSurfaceView.getHolder());
} catch (IOException e) {
// 异常处理逻辑。
}
在此步骤中,我们将在App中增加显示人脸检测结果的功能。将以下内容添加至FaceAnalyzerTransactor类的transactResult方法中:
FaceAnalyzerTransactor.java
// todo step 4: add on-device face graphic
public class FaceAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLFace> {
@Override
public void transactResult(MLAnalyzer.Result<MLFace> results) {
SparseArray<MLFace> items = results.getAnalyseList();
// 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。
// 不可调用ML Kit提供的其他检测相关接口。
MLFaceGraphic graphic = new MLFaceGraphic(mGraphicOverlay, items);
mGraphicOverlay.add(graphic);
}
@Override
public void destroy() {
// 检测结束回调方法,用于释放资源等。
}
}
点击Android Studio工具栏的Run ()图标,运行App。
将手机摄像头对焦到人脸,人脸的轮廓和特征点就可以正确的显示出来:
恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:
本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息:开发指南。