我正在测试android vision文本识别器,并且在实时使用中,docs建议我“对文本识别器进行节流调用。如果在运行文本识别器时有新的视频帧可用,放下框架。”
在示例ocr-reader应用程序中,该应用程序与ML Kit示例应用程序共享CameraSource
和OcrDetectorProcessor
,我试图精确地确定这是如何实现的。有人可以指出我正确的方向吗?我正在查看CameraPreviewCallback
和FrameProcessingRunnable
类,但还没有任何进展。谢谢!
答案 0 :(得分:0)
我有一个完全相同的问题,但我设法做到了这一点:这是相当“手动”的,想法是在将processImage传递到检测器之前先有一个标记。
private var isProcessing = AtomicBoolean(false)
private fun process(image: FirebaseVisionImage) {
isProcessing.set(true)
detector.processImage(image)
.addOnSuccessListener { texts ->
processTextRecognitionResult(texts)
isProcessing.set(false)
}
.addOnFailureListener {
println("Detection failed with $it")
}
}
所以基本上
override fun analyze(imageProxy: ImageProxy?, degrees: Int) {
imageProxy?.image?.let { image ->
if(!isProcessing.get()) {
process(image)
}
}
}