【问题标题】:How can I use two Ml Kit detectors at the same time如何同时使用两个 Ml Kit 检测器
【发布时间】:2021-05-14 01:43:46
【问题描述】:

我想在我的应用程序中同时使用图像标记和文本识别。我有以下内容:

fun initAnalyzer(cameraExecutor: Executor) {
        imageAnalyzer = ImageAnalysis.Builder().build().also { imageAnalysis ->
            imageAnalysis.setAnalyzer(
                    cameraExecutor,
                    ImageMLAnalyzer { image, imageProxy, machineLearningUtils ->
                        textClassifier?.processImageWithText(image,
                                onSuccess = { result ->
                                    val resultString = processLineText(result)
                                    if (TextRecognitionClassifier.NORESULT !=
                                            resultString &&
                                            !isProcessingImage) {
                                        processAnalyzedResult(resultString)

                                    } else {
                                        imageClassifier?.processImage(image,
                                                onSuccess = { labelProbList ->
                                                    val labelResult = processResult(labelProbList)
                                                    if (ImageClassifier.NORESULT != labelResult &&
                                                            !isProcessingImage) {
                                                        openWebView(labelResult)
                                                    }
                                                    machineLearningUtils.analyzing(false)
                                                    imageProxy.close()

                                                }, onFailure = {
                                            machineLearningUtils.analyzing(false)
                                            imageProxy.close()
                                        })
                                    }
                                    machineLearningUtils.analyzing(false)
                                    imageProxy.close()

                                }, onFailure = {
                            machineLearningUtils.analyzing(false)
                            imageProxy.close()
                        })
                    })
        }
    }

我遇到的问题是,首先,这样我并没有真正同时使用它们,其次,当我进入图像检测器时出现错误:

com.google.firebase.ml.common.FirebaseMLException: No image data found.

【问题讨论】:

    标签: android kotlin machine-learning google-mlkit firebase-machine-learning


    【解决方案1】:

    我自己回答,我已经用布尔值解决了:

    fun initAnalyzer(cameraExecutor: Executor) {
            imageAnalyzer = ImageAnalysis.Builder().build().also { imageAnalysis ->
                imageAnalysis.setAnalyzer(
                        cameraExecutor,
                        ImageMLAnalyzer { image, imageProxy, machineLearningUtils ->
                            if (!useNextDetector) {
                                textClassifier?.processImageWithText(image,
                                        onSuccess = { result ->
                                            val resultString = processLineText(result)
                                            if (TextRecognitionClassifier.NORESULT !=
                                                    resultString &&
                                                    !isProcessingImage) {
                                                processAnalyzedResult(resultString)
                                            }
                                            useNextDetector = true
                                            machineLearningUtils.analyzing(false)
                                            imageProxy.close()
    
                                        }, onFailure = {
                                    machineLearningUtils.analyzing(false)
                                    imageProxy.close()
                                })
    
                            } else {
                                imageClassifier?.processImage(image,
                                        onSuccess = { labelProbList ->
                                            val result = processResult(labelProbList)
                                            if (ImageClassifier.NORESULT != result &&
                                                    !isProcessingImage) {
                                                openWebView(result)
                                            }
                                            useNextDetector = false
                                            machineLearningUtils.analyzing(false)
                                            imageProxy.close()
    
                                        }, onFailure = {
                                    machineLearningUtils.analyzing(false)
                                    imageProxy.close()
                                })
                            }
                        })
            }
        }
    

    它对我有用,因为它会分析直到找到“适合它”的东西并使用它,如果你能想到更好的方法,我正在倾听。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-26
      • 2019-10-12
      • 2021-01-12
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 2020-08-27
      • 2020-05-23
      相关资源
      最近更新 更多