2

我正在开发一个项目,该项目使用 CameraX 在TextureView. 代码来自这个codelab。我已使用该setOnPreviewOutputUpdateListener()方法更新TextureView.

private fun startCamera() {
    val previewConfig = PreviewConfig.Builder().apply {
        setTargetAspectRatio( Rational( 1 , 1 ) )
        setTargetResolution( Size( 640 , 640 ) )
    }.build()
    val preview = Preview( previewConfig )
    preview.setOnPreviewOutputUpdateListener {
        val parent = cameraTextureView?.parent as ViewGroup
        parent.removeView( cameraTextureView )
        cameraTextureView?.surfaceTexture = it.surfaceTexture
        parent.addView( cameraTextureView , 0)
        updateTransform()
    }
    preview.removePreviewOutputListener()
    CameraX.bindToLifecycle( this , preview )
}

我的问题是如何byte[]使用 CameraX 从预览帧中获取原始对象。我期待与onPreviewFrame(byte[] data, Camera camera)方法类似的东西。

基本上,我想要使用 CameraX 预览的实时帧( inbyte[]Bitmap)。

4

1 回答 1

7

您将使用ImageAnalysis。预览帧将以 YUV_420_888 格式传递给您的分析器。

如有必要,您可以请求非阻塞分析模式。我建议为您的分析器设置一个处理程序,以便相机回调不会到达 UI 线程。

于 2019-09-24T20:57:06.287 回答