简介

HUAWEI ML Kit支持检测人脸特征,包括眼睛、耳朵、鼻子和嘴巴在面部的位置,以及识别用户是否在微笑,并抓拍用户的微笑照片。并将检测结果返回给开发者的APP,您可以充分利用这些信息来开发自己的应用。

您将要做什么

在这个codelabs中,您将完成一个微笑抓拍的demo工程。

您将要学到什么

您可以学会如何使用HUAWEI ML Kit SDK。

硬件设备

软件要求

Demo工程包

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

配置您的工程和设备

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

  5. 确保手机已经正确连接至您的电脑
  6. 如果提示"Unknown Device"或者"No device",请在CMD命令窗口执行以下命令重启adb服务:

    adb kill-server and adb start-server.

    (备注1:adb默认的安装路径是C:\Users\USER_NAME\AppData\Local\Android\Sdk*platform-tools*\adb

    备注2:如果demo仍然启动失败,您需要用以下命令终止占用5037端口的进程:kill PORT_NUMBER

    备注3:执行命令Netstat –ano|findstr 5037可以查询占用5037端口的进程)

    如果工具栏显示了如下手机图标,说明您的配置已经生效。

添加摄像头权限

在此步骤中,我们将给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中创建人脸分析器。将以下内容添加至LiveFaceAnalyseActivity类中的createFaceAnalyzer方法:

LiveFaceAnalyseActivity.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);

创建LensEngine对象

在此步骤中,我们将在APP中增加启动摄像头的功能。将以下内容添加至LiveFaceAnalyseActivity类的createFaceAnalyzer方法中:

LiveFaceAnalyseActivity.java

// todo step 3: add on-device lens engine Context context = this.getApplicationContext(); // Create LensEngine this.mLensEngine = new LensEngine.Creator(context, this.analyzer) .setLensType(this.lensType) .applyDisplayDimension(640, 480) .applyFps(25.0f) .enableAutomaticFocus(true) .create();

显示人脸检测结果及微笑抓拍

在此步骤中,我们将在APP中增加显示人脸检测结果的功能。将以下内容添加至LiveFaceAnalyseActivity类中的FaceResult内部类的相关回调方法中

LiveFaceAnalyseActivity.java

// todo step 4: add on-device face graphic LocalFaceGraphic faceGraphic = new LocalFaceGraphic(LiveFaceAnalyseActivity.this.overlay, obj, LiveFaceAnalyseActivity.this); LiveFaceAnalyseActivity.this.overlay.addGraphic(faceGraphic); MLFaceEmotion emotion = obj.getEmotions();

进行微笑抓拍

在此步骤中,我们将在APP中对用户是否在微笑进行识别,并抓拍用户的微笑照片,将以下内容添加至LiveFaceAnalyseActivity类中的takePhoto方法:

// todo step 5: add on-device face takePhoto this.mLensEngine.photograph(null, new LensEngine.PhotographListener() { @Override public void takenPhotograph(byte[] bytes) { mHandler.sendEmptyMessage(STOP_PREVIEW); Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); saveBitmapToDisk(bitmap); } });

运行APP

点击Android Studio工具栏的 Run ()图标,运行APP。

开始体验

将手机摄像头对焦到人脸,检测到有微笑将进行微笑抓拍:

任务结束

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

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

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

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

https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/service-introduction-0000001050040017

已复制代码