1. 介绍
简介
HUAWEI ML Kit提供的人脸检测服务支持检测人脸特征,包括人脸轮廓,眉毛、眼睛、鼻子、嘴巴、耳朵等部位在面部的位置,以及人脸偏转角度等信息,并将检测结果返回给开发者的App。
您将建立什么
在这个codelab中,您将完成一个人脸检测的demo工程。
您将会学到什么
- 您可以学会如何使用HUAWEI ML Kit SDK。
- 您可以学会如何调用HUAWEI ML Kit的人脸检测方法。
2. 您需要什么
硬件设备
- 安装了Android Studio可以用于App开发的个人电脑。
- 一部装有Android 4.4 以上版本的手机用于开发调测App
软件要求
- JDK 1.8.211及以上
- 安装Android Studio 3.X及以上
- minSdkVersion 19及以上(必须)
- targetSdkVersion 30(推荐)
- compileSdkVersion 30(推荐)
- Gradle 4.6及以上(推荐)
- 测试应用的设备:EMUI 5.0及以上的华为手机或Android 4.4及以上的非华为手机(部分能力仅支持华为手机)
如果同时使用多个HMS Core的服务,则需要使用各个Kit对应的最大值。
3. 集成SDK
- Maven仓地址配置方式,可参见开发指南的配置HMS Core SDK的Maven仓地址。
- 人脸检测服务SDK的集成方式,可参见开发指南的集成人脸检测服务SDK。
5. 构建并运行demo
配置您的工程和设备
- 从"File"下拉菜单选取"Open"从解压文件的目录D:\MLKit-master\initial导入demo工程。

- 如果有类似下图的提示弹窗,请点击"OK":

- 从gradle文件同步工程:

- 确保手机已经正确连接至您的电脑

如果显示以下信息,表示工程同步成功:
如果提示"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());
创建LensEngine对象
在此步骤中,我们将在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() {
// 检测结束回调方法,用于释放资源等。
}
}
运行App
点击Android Studio工具栏的Run (
)图标,运行App。
开始体验
将手机摄像头对焦到人脸,人脸的轮廓和特征点就可以正确的显示出来:
6. 恭喜您
恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:
- 如何使用HUAWEI ML Kit SDK。
- 如何调用HUAWEI ML Kit的人脸检测方法。
7. 参考
本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息:开发指南。