android 安卓相机X:如何获取与分析图像代理相关联AF状态

wtlkbnrh  于 2022-12-21  发布在  Android
关注(0)|答案(1)|浏览(179)

我是CameraX的新手,来自Camera2
对于Camera2,当调用CameraCaptureSession. CaptureCallback. onCaptureCompleted时,我们会获得TotalCaptureResult的示例,其中包含许多关于图像的有用信息,例如:第一个月
现在,我开始使用CameraX,并使用图像分析用例。
在这种情况下,我通过

void analyze(@NonNull ImageProxy image);

但是,我如何才能获得与图像相关的自动对焦状态呢?
多谢了
我搜索了CameraX源代码,但没有找到答案。
但是对于这样的分析用例,在我看来知道图像是否对焦是非常重要的。

xurqigkl

xurqigkl1#

万一这对别人有帮助,我找到了一个解决我问题的方法。
总之,使用Camera2Interop.Extender(构建器)
关于细节,在我使用ImageAnalysis.Builder()的地方,我用CameraCaptureSession.CaptureCallback(属于Camera2)的一个实现来修改它,回到已知的世界,在那里你可以像这样获得关于每个图像的元数据:

val result: CaptureResult
val afState result.get(CaptureResult.CONTROL_AF_STATE)

下面是获取CaptureResult的方法:

val builder = ImageAnalysis.Builder()  
Camera2Interop.Extender(builder).setSessionCaptureCallback(captureCallback)
val analysisUseCase = builder.build()

其中captureCallback实现了CameraCaptureSession.CaptureCallback
然后,您只需使用时间戳将捕获元数据Map到每个图像:

  • imageProxy.imageInfo.timestamp,您可以从实现
ImageAnalysis.Analyzer.analyze(ImageProxy imageProxy)
  • result.get(CaptureResult.SENSOR_TIMESTAMP),您可以从实现
CameraCaptureSession.CaptureCallback.onCaptureCompleted(
        session: CameraCaptureSession,
        request: CaptureRequest,
        result: TotalCaptureResult
)

但是要注意,对于提供给ImageAnalysis.Analyzer.analyze的每个映像,不一定都调用onCaptureCompleted

相关问题