机器学习套件(ML Kit)组件在在线版和教育版中提供,离线版(含机房版)不包含。
它能做什么
人像分割把照片里的人和背景分开,直接输出成品 PNG:抠出人像(背景透明)、换纯色背景(证件照蓝底红底)、换成另一张图片作背景、背景虚化。结果文件路径能直接给「图像」组件显示或拿去分享上传。
准备工作
- 阈值:「阈值」默认 0.5,调高抠得更紧、调低保留更多边缘。
- 颜色:换纯色背景的颜色用颜色块或
&HAARRGGBB数字。 - 联机调试:安卓上用 AI 伴侣调试需要安装 MLKit 版 AI 伴侣(应用宝,包名 cn.fun123.appinventor);普通版伴侣不含识别引擎,调用时会触发「屏幕.出现错误时」(错误码 4722)。直接打包 APK 安装测试不受影响。
- 安装包体积:只有用到本组件的 App 才会打包它的识别引擎与模型,体积以编译结果为准。
- 鸿蒙:完整支持图片处理:调用系统主体分割,人、宠物、物品都会被当作主体,拍人像时效果一致;实时换背景暂不支持,「打开实时摄像头」「保存当前画面」会触发「处理失败」。
案例一:抠人像和换蓝底
先把选好的图存进全局变量,再按按钮选择效果:
global 原图 = ""
when 图像选择器_相册.AfterPicking() {
原图 = 图像选择器_相册.Selection
图像_预览.Picture = 原图
}
when 按钮_抠图.Click() {
人像分割1.ExtractPerson(原图)
}
when 按钮_蓝底.Click() {
人像分割1.ReplaceBackgroundWithColor(原图, &HFF438EDB)
}
when 人像分割1.GotResult(图片地址, 宽度, 高度) {
图像_结果.Picture = 图片地址
标签_状态.Text = join("完成 ", 宽度, "×", 高度)
}
案例二:背景虚化、换图片背景与清理
虚化半径建议 8~25;换图片背景时背景图会缩放到与原图同样大小;「清空缓存」返回删除的文件数:
when 按钮_虚化.Click() {
人像分割1.BlurBackground(原图, 15)
}
when 按钮_换图.Click() {
人像分割1.ReplaceBackgroundWithImage(原图, "bg_scenery.png")
}
when 按钮_清理.Click() {
标签_状态.Text = join("已删除 ", 人像分割1.ClearCache(), " 张生成的图片")
}
when 人像分割1.SegmentFailed(操作, 错误信息) {
标签_错误.Text = join(操作, ":", 错误信息)
}
案例三:实时换背景,再把画面存下来
「打开实时摄像头」后预览区直接显示换好背景的画面:「实时背景效果」可选 blur(虚化)、color(换成「实时背景颜色」)、image(换成「实时背景图片」),进行中修改下一帧就生效。案例工程在设计器里设好了前置摄像头和风景背景图,「保存当前画面」把看到的画面存成 PNG,完成后照常触发「处理完成」:
when 按钮_实时.Click() {
人像分割1.PreviewContainer = 垂直布局_预览
人像分割1.StartLiveCamera()
}
when 按钮_切换.Click() {
人像分割1.LiveEffect = choose(人像分割1.LiveEffect == "blur", "color", choose(人像分割1.LiveEffect == "color", "image", "blur"))
标签_状态.Text = join("实时换背景:", 人像分割1.LiveEffect)
}
when 按钮_保存.Click() { 人像分割1.CaptureLiveFrame() }
when 按钮_停止.Click() { 人像分割1.StopLiveCamera() }
结果数据说明
每次处理都会在应用私有目录生成一张新的 PNG(文件名带时间),「图像路径」是完整路径,宽高与原图相同。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 边缘有残留背景 | 调高「阈值」;背景与衣服颜色接近时效果会变差 |
| 处理很慢 | 原图太大时先用「图片处理」压缩再分割 |
| 存储越来越大 | 定期调「清空缓存」 |
| 实时预览黑屏、看不到画面 | 「预览容器」要选布局组件并给明确宽高(如宽度充满、高度 300 像素);第一次打开要允许摄像头权限 |
| 实时检测时界面卡 | 调大「实时事件间隔」,事件里少做事;画面上的标注不受间隔影响 |
完整 .aia 源码与操作指导
导入 PortraitSegmenterDemo.aia 后可以直接打包 APK 运行;用 AI 伴侣联机调试请安装 MLKit 版 AI 伴侣。源码文件已通过正式编辑器载入、后台导入和 APK 编译校验;真机识别效果请以实际设备为准。
| 功能 | 操作 | 预期结果 |
|---|---|---|
| 抠人像 | 选人像照后点「抠人像」 | 结果区显示背景透明的人像 |
| 换蓝底 / 红底 | 点对应按钮 | 背景换成证件照蓝色或红色 |
| 背景虚化 | 点「背景虚化」 | 人物清晰、背景模糊 |
| 换风景背景 | 点「换风景背景」 | 背景换成工程自带的风景图 |
| 清理文件 | 点「清理文件」 | 提示删除的图片数量 |
| 实时换背景 | 点「实时换背景」,再点「切换效果」 | 前置摄像头画面里背景在虚化、蓝底、风景之间切换 |
| 保存画面 | 实时换背景时点「保存画面」 | 结果区显示刚才看到的画面 |
案例界面与积木源码在仓库 docs/markdown/reference/components/guide/examples/PortraitSegmenterDemo/,SHA-256:5662a65b8d50205e383c6f483714a7af3a41600a9d8b34af793ed7534337777f。
扫码添加客服咨询