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 READ_EXTERNAL_STORAGE ,WRITE_EXTERNAL_STORAGE -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
在此步骤中,我们将在APP中创建人像分割分析器。将以下内容添加至StillCutPhotoActivity类中的createImageTransactor方法:
StillCutPhotoActivity.java
// todo step 2: add on-device ImageSegmentation analyzer
MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory()
.setAnalyzerType(MLImageSegmentationSetting.BODY_SEG)
.create();
this.analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting);
在此步骤中,我们将检测的图片封装成MLFrame格式,送给SDK处理。
// todo step 3: add on-device ImageSegmentation mlFrame
MLFrame mlFrame = new MLFrame.Creator().setBitmap(this.originBitmap).create();
todo step 4: add on-device ImageSegmentation task
Task<MLImageSegmentation> task = this.analyzer.asyncAnalyseFrame(mlFrame);
在此步骤中,我们将在APP中增加返回分割后的结果。将以下内容添加至StillCutPhotoActivity类的createImageTransactor方法task返回成功的回调中
StillCutPhotoActivity.java
// todo step 5: add on-device ImageSegmentation result
StillCutPhotoActivity.this.foreground = mlImageSegmentationResults.getForeground();
StillCutPhotoActivity.this.preview.setImageBitmap(StillCutPhotoActivity.this.foreground);
StillCutPhotoActivity.this.processedImage = ((BitmapDrawable) ((ImageView) StillCutPhotoActivity.this.preview).getDrawable()).getBitmap();
点击Android Studio工具栏的 Run ()图标,运行APP。
选择人像图进行分割,返回结果:
原图:
分割后:
恭喜您,您已经成功完成了此次codelab任务,并学到了以下技能:
请访问我们的官方网站,以进一步了解HUAWEI ML Kit:
本文介绍的工程仅用于简单演示,实际开发过程中应严格遵循开发指南。访问以下链接可以获取详细信息: