【问题标题】:Android CameraX: how to get AF status associated with an analysis ImageProxyAndroid CameraX:如何获取与分析 ImageProxy 关联的自动对焦状态
【发布时间】:2022-12-19 23:35:23
【问题描述】:

我是 CameraX 的新手,来自 Camera2

使用 Camera2,当调用 CameraCaptureSession.CaptureCallback.onCaptureCompleted 时,我们会得到一个 TotalCaptureResult 实例,其中包含有关图像的许多有用信息,例如: final Integer afState = result.get(TotalCaptureResult.CONTROL_AF_STATE);

现在,我开始使用带有图像分析用例的 CameraX。

在那种情况下,我通过

void analyze(@NonNull ImageProxy image);

但是,我怎样才能获得与图像相关的自动对焦状态呢?

非常感谢

我搜索了 CameraX 源代码,但没有找到答案。

但是对于这样的用例分析,在我看来,了解图像是否对焦非常重要。

【问题讨论】:

    标签: android android-camera android-camerax


    【解决方案1】:

    如果这对其他人有帮助,我找到了解决问题的方法。

    总之,使用 Camera2Interop.Extender(builder)

    有关详细信息,在我使用 ImageAnalysis.Builder() 的地方,我使用属于 Camera2 的 CameraCaptureSession.CaptureCallback 的实现对其进行了修改,回到已知世界,您可以在其中获取有关每个图像的元数据,如下所示:

    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

    然后你只需要使用时间戳来映射每个图像的捕获元数据:

    • imageProxy.imageInfo.timestamp 你从你的实施中得到的
    ImageAnalysis.Analyzer.analyze(ImageProxy imageProxy) 
    
    • result.get(CaptureResult.SENSOR_TIMESTAMP) 你从你的实施中得到的
    CameraCaptureSession.CaptureCallback.onCaptureCompleted(
            session: CameraCaptureSession,
            request: CaptureRequest,
            result: TotalCaptureResult
    )
    

    但请注意,onCaptureCompleted 不一定会为提供给 ImageAnalysis.Analyzer.analyze 的每个图像调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多