【发布时间】:2020-03-01 08:23:40
【问题描述】:
我需要在 Android 上使用 MLKit 实现文本识别,我决定使用新的 CameraX api 作为相机库。我正在为图像的类或数据流的正确“管道”而苦苦挣扎,因为 CameraX 是相当新的,而且资源不多。用例是我拍摄照片,在中间裁剪一些在 UI 中可见的边界,然后将裁剪后的图像传递给将处理图像的 MLKit。
鉴于此,ImageAnalysis.Analyzer api 有什么地方吗?据我了解,此分析器仅用于预览,而不用于捕获的图像。
我的第一个想法是使用接受OnImageCapturedCallback 的takePicture 方法,但是当我尝试访问时,例如。 ImageProxy.height 应用程序因异常 java.lang.IllegalStateException: Image is already closed 而崩溃,我找不到任何解决方法。
然后我决定使用takePicture 方法的另一个重载,现在我将图像保存到文件中,然后将其读取到位图,裁剪此图像,现在我有一个可以传递给 MLKit 的图像。但是当我查看传递给FirebaseVisionTextRecognizer 的FirebaseVisionImage 时,它有一个factory method,我可以将我从OnImageCapturedCallback 获得的图像传递给它,这似乎是我在做一些不必要的步骤。
所以我的问题是:
- 是否有一些类 (CaptureProcessor?) 可以处理拍摄图像的裁剪?我想那我可以使用
OnImageCapturedCallback我会收到已经裁剪的图像。 - 如果我不进行实时处理而我正在进行后期处理,我是否应该使用
ImageAnalysis.Analyzer?
我想我可以用我目前的方法实现我想要的,但我觉得我可以使用比现在更多的 CameraX。
谢谢!
【问题讨论】:
标签: android firebase-mlkit text-recognition android-camerax