我正在尝试在 Android 上运行头发分割,但它不起作用。它返回空结果作为输出,而人工分割工作得很好。
这是代码。
public class MainActivity extends AppCompatActivity {
MLImageSegmentationAnalyzer analyzer;
Bitmap originialBitmap;
Bitmap foregroundBitmap;
ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.person);
bitmap = Bitmap.createScaledBitmap(bitmap, 1000, 1500, true);
createImageTransactor(bitmap);
}
private void createImageTransactor(Bitmap bitmap) {
MLImageSegmentationSetting setting = new MLImageSegmentationSetting.Factory()
.setExact(true)
.setAnalyzerType(MLImageSegmentationSetting.HAIR_SEG)
.create();
this.analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting);
MLFrame mlFrame = new MLFrame.Creator().setBitmap(bitmap).create();
Task<MLImageSegmentation> task = this.analyzer.asyncAnalyseFrame(mlFrame);
task.addOnSuccessListener(new OnSuccessListener<MLImageSegmentation>() {
@Override
public void onSuccess(MLImageSegmentation mlImageSegmentationResults) {
// Transacting logic for segment success.
if (mlImageSegmentationResults != null) {
Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_SHORT).show();
foregroundBitmap = mlImageSegmentationResults.getGrayscale();
imageView.setImageBitmap(foregroundBitmap);
} else {
Toast.makeText(MainActivity.this, "Failure", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Toast.makeText(MainActivity.this, "Failure", Toast.LENGTH_SHORT).show();
// Transacting logic for segment failure.
return;
}
});
}
}
这是 gradle 文件。
implementation 'com.huawei.hms:ml-computer-vision-cloud:2.0.5.300'
implementation 'com.huawei.hms:ml-computer-vision-segmentation:2.2.0.300'
implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-body-model:2.2.0.300'
implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-multiclass-model:2.2.0.300'
implementation 'com.huawei.hms:ml-computer-vision-image-segmentation-hair-model:2.2.0.300'
但是当代码运行时,它会输出空图像,并且分割结果中的掩码在数组中包含整个 0。
请让我知道是什么问题。