分析图片

图片分析用例为您的应用提供了可供 CPU 访问以执行图片处理、计算机视觉或机器学习推断的图片。该应用会实现在每个帧上运行的 Analyzer 方法。

实现

图片是通过将具有 ImageProxy 参数和旋转参数的方法传递给 setAnalyzer() 方法来处理的。

以下代码示例显示了如何执行此操作,以及如何将图片分析用例和预览用例绑定到 LifecycleOwner。要了解如何创建预览用例,请参阅实现预览

从此方法返回后,图片引用即会关闭。因此,此方法应完成分析或进行复制,而不是将图片引用传递到分析方法以外。

Kotlin

    val imageAnalysisConfig = ImageAnalysisConfig.Builder()
        .setTargetResolution(Size(1280, 720))
        .build()
    val imageAnalysis = ImageAnalysis(imageAnalysisConfig)

    imageAnalysis.setAnalyzer({ image: ImageProxy, rotationDegrees: Int ->
        // insert your code here.
    })

    CameraX.bindToLifecycle(this as LifecycleOwner, imageAnalysis, preview)
    

Java

    ImageAnalysisConfig config =
        new ImageAnalysisConfig.Builder()
            .setTargetResolution(new Size(1280, 720))
            .build();

    ImageAnalysis imageAnalysis = new ImageAnalysis(config);

    imageAnalysis.setAnalyzer(
        new ImageAnalysis.Analyzer() {
            @Override
            public void analyze(ImageProxy image, int rotationDegrees) {
                // insert your code here.
            }
    });

    CameraX.bindToLifecycle((LifecycleOwner) this, imageAnalysis, preview);
    

CameraX 会生成 YUV_422_888 格式的图片。

其他资源

要详细了解 CameraX,请参阅下面列出的其他资源。

Codelab

  • CameraX 使用入门
  • 向应用中添加 CameraView 片段
  • 代码示例

  • 官方 CameraX 示例应用