Android文字识别-限制文字识别器

时间:2019-03-16 17:36:49

标签: android firebase-mlkit android-vision

我正在测试android vision文本识别器,并且在实时使用中,docs建议我“对文本识别器进行节流调用。如果在运行文本识别器时有新的视频帧可用,放下框架。”

在示例ocr-reader应用程序中,该应用程序与ML Kit示例应用程序共享CameraSourceOcrDetectorProcessor,我试图精确地确定这是如何实现的。有人可以指出我正确的方向吗?我正在查看CameraPreviewCallbackFrameProcessingRunnable类,但还没有任何进展。谢谢!

1 个答案:

答案 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)
            }
        }
    }