Как получить кадр предварительного просмотра с помощью CameraX? - PullRequest
1 голос
/ 24 сентября 2019

Я работаю над проектом, который использует 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).

По сути, я хочу кадры реального времени (в byte[] или Bitmap) из предварительного просмотра с помощью CameraX.

1 Ответ

1 голос
/ 24 сентября 2019

Вы будете использовать ImageAnalysis .Кадры предварительного просмотра будут переданы на анализатор в формате YUV_420_888.

При необходимости вы можете запросить неблокирующий режим анализа.Я бы рекомендовал установить обработчик для вашего анализатора, чтобы обратные вызовы камеры не поступали в поток пользовательского интерфейса.

...