Huawei Hair Segmentation 安卓端运行返回空输出问题求助
安卓端HMS MLKit头发分割返回全0掩码问题排查
- 依赖版本不兼容问题
你当前引入的com.huawei.hms:ml-computer-vision-cloud版本为2.0.5.300,与分割SDK的2.2.0.300版本跨度过大,会出现类兼容异常。请将所有HMS ML相关依赖统一为相同版本,建议所有分割相关依赖统一升级至最新稳定版,若仅使用端侧分割能力可直接移除不必要的云服务依赖。 - 参数配置错误问题
setExact(true)为高精度人体分割专属配置,头发分割场景不支持该参数,你可以将初始化代码修改为:
MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory() .setExact(false) .setAnalyzerType(MLImageSegmentationSetting.HAIR_SEG) .create();
- 输入图片不符合规格问题
当前你缩放的图片比例为1000*1500,首先确认测试图片中人脸占比不小于画面的1/3,且为无遮挡的清晰正面头部,避免使用侧颜、头发被帽子/围巾遮挡、分辨率过低的测试图。 - 模型未正确初始化问题
首次调用头发分割能力时,SDK会自动下载端侧模型,请确认测试设备网络正常,模型下载完成后再调用分割能力。另外请确认你已经在项目中正确导入agconnect-services.json配置文件,且在AppGallery Connect后台已开启ML Kit的分割服务权限。 - 结果获取逻辑问题
你当前直接调用getGrayscale()获取灰度图,可先手动打印掩码数组确认返回值:
// 在onSuccess回调中添加 int[][] masks = mlImageSegmentationResults.getMasks(); for (int i = 0; i < masks.length; i++) { for (int j = 0; j < masks[0].length; j++) { if (masks[i][j] != 0) { Log.d("HAIR_SEG", "find hair pixel at: " + i + "," + j); } } }
如果存在非0像素,说明掩码正常,你可以手动遍历掩码生成可视Bitmap,头发区域的像素值固定为1,你可以将对应位置设为任意颜色显示即可。
内容的提问来源于stack exchange,提问作者Muhammad Rafique
相关产品推荐
相关产品推荐

