【发布时间】:2021-05-09 04:33:09
【问题描述】:
我是 MLKit 的新手。
通过查看文档和示例 MLKit 应用程序,我首先注意到的一点是,似乎有多种方法可以附加/使用图像处理器/分析器。
在某些情况下,他们演示了使用 ImageAnalyzer api https://developers.google.com/ml-kit/vision/image-labeling/custom-models/android
private class YourImageAnalyzer : ImageAnalysis.Analyzer {
override fun analyze(imageProxy: ImageProxy) {
val mediaImage = imageProxy.image
if (mediaImage != null) {
val image = InputImage.fromMediaImage(mediaImage, imageProxy.imageInfo.rotationDegrees)
// Pass image to an ML Kit Vision API
// ...
}
}
}
分析器似乎可以绑定到 CameraProviders 的生命周期
cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageCapture, imageAnalyzer)
在 MLKit 展示应用程序中显示的其他情况下,CameraSource 具有可以设置的帧处理器。
cameraSource?.setFrameProcessor(
if (PreferenceUtils.isMultipleObjectsMode(this)) {
MultiObjectProcessor(graphicOverlay!!, workflowModel!!)
} else {
ProminentObjectProcessor(graphicOverlay!!, workflowModel!!)
}
)
那么这只是做同一件事的两种不同方法吗?它们可以混合搭配吗?选择其中一个是否有性能优势?
作为一个具体的例子:如果我想使用 MLKit ImageLabeler,我应该将它包装在一个处理器中并将其设置为 CameraSource 的 ImageProcessor,还是在 Image Analysis 回调中使用它并将其绑定到 CameraProvider?
最后,在使用 CameraSource(MLKit Material 展示应用程序)的示例中,没有使用 CameraProvider...这仅仅是因为 CameraSource 使其无关紧要和不需要吗?在这种情况下,将 ImageAnalyzer 绑定到 CameraProvider 甚至不是一个选项吗?是否可以简单地将不同的 ImageProcessor 设置为 CameraSource,因为它们在不同的场景中运行,例如 ImageLabelling、对象检测、文本识别等?
【问题讨论】:
标签: android android-studio firebase-mlkit google-mlkit