HUAWEI ML Kit支持检测人脸特征,包括眼睛、耳朵、鼻子和嘴巴在面部的位置,以及识别用户是否在微笑,并抓拍用户的微笑照片。并将检测结果返回给开发者的APP,您可以充分利用这些信息来开发自己的应用。
在这个codelabs中,您将完成一个微笑抓拍的demo工程。
您可以学会如何使用HUAWEI ML Kit SDK。
解压下载的压缩包到本地磁盘(比如D:\mlkit-demo)。
如果显示以下信息,表示工程同步成功:
如果提示"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);
在此步骤中,我们将在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);
}
});
点击Android Studio工具栏的 Run ()图标,运行APP。
将手机摄像头对焦到人脸,检测到有微笑将进行微笑抓拍:
任务结束
恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:
请访问我们的官方网站,以进一步了解HUAWEI ML Kit:
本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息: