如何解决如何同时使用两个 Ml Kit 检测器
我想在我的应用程序中同时使用图像标记和文本识别。我有以下几点:
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.
解决方法
我自己回答,我已经用布尔值解决了:
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()
})
}
})
}
}
它对我有用,因为它会分析直到找到“适合它”的东西并使用它,如果你能想到更好的方法,我会倾听。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。