简介

HUAWEI ML Kit提供的人脸检测服务支持检测人脸特征,包括人脸轮廓,眉毛、眼睛、鼻子、嘴巴、耳朵等部位在面部的位置,以及人脸偏转角度等信息,并将检测结果返回给开发者的App。

您将建立什么

在这个codelab中,您将完成一个人脸检测的demo工程。

您将会学到什么

硬件设备

软件要求

点击以下链接,下载codelab的demo工程包:

Demo工程包
解压下载的压缩包到本地磁盘(比如D:\mlkit-demo)。

配置您的工程和设备

  1. 从"File"下拉菜单选取"Open"从解压文件的目录D:\MLKit-master\initial导入demo工程。
  2. 如果有类似下图的提示弹窗,请点击"OK":
  3. 从gradle文件同步工程:
  4. 如果显示以下信息,表示工程同步成功:

  5. 确保手机已经正确连接至您的电脑
  6. 如果提示"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。

开始体验

将手机摄像头对焦到人脸,人脸的轮廓和特征点就可以正确的显示出来:

恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:

请访问我们的官方网站,以进一步了解HUAWEI ML Kit:

https://developer.huawei.com/consumer/cn/hms/huawei-mlkit

本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息:开发指南

Code copied