3

我正在使用华为图像分割从图像中去除背景。此代码在debug build上工作得很好,但在release build上不起作用。我不明白可能是什么情况。

代码:

  private fun imageSegmentation(bitmap: Bitmap?) {
            if (bitmap == null) {
                dialog.dismiss()
                Toast.makeText(requireContext(), "Something went wrong. Try again!", Toast.LENGTH_LONG).show()
                return
            }
    
            val setting =
                MLImageSegmentationSetting.Factory()
                    .setAnalyzerType(MLImageSegmentationSetting.BODY_SEG)
                    .setExact(true)
                    .create()
            val analyzer = MLAnalyzerFactory.getInstance().getImageSegmentationAnalyzer(setting)
            val mlFrame = MLFrame.Creator().setBitmap(bitmap).create()
            val task = analyzer?.asyncAnalyseFrame(mlFrame)
            task?.addOnSuccessListener { mlImageSegmentationResults ->
                if (mlImageSegmentationResults != null) {
                    removalFlag = true
                    removalBitmap = mlImageSegmentationResults.foreground
                } else
                    Toast.makeText(context, "No human body is detected!", Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }?.addOnFailureListener {
                Toast.makeText(context, "No human body is detected!", Toast.LENGTH_LONG).show()
                dialog.dismiss()
            }
        }

依赖项:

 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'

注意:根据我的理解,task?.addOnSuccessListener调用但mlImageSegmentationResults返回null

4

1 回答 1

4

当您启用了 ProGuard 但未正确配置时,通常会发生这种情况。确保在proguard-rules.pro文件中添加适当的规则,以防止它混淆相关的类。

这方面的信息通常由库开发人员提供。经过快速搜索,我想出了这个例子。来源似乎记录得很好,因此找到正确的设置应该不是问题。

请记住,您可能需要为多个库添加规则。

于 2021-12-27T08:50:54.050 回答