gpt4 book ai didi

Android camera2 createCaptureRequest 获取YUV_420_888图像时返回全黑像素

转载 作者:行者123 更新时间:2023-11-29 02:25:29 26 4
gpt4 key购买 nike

我有一个 Android camera2 API preview 在 Kotlin 中运行正常,使用 suspendCoroutine 进行所有表面设置和回调。但是当我尝试在应用程序启动 5 秒后拍照时(TEMPLATE_STILL_CAPTURE,YUV_420_888,最小分辨率)出于某种原因它会完全变黑片刻(即使在预览窗口中)并且我得到一个充满 0- 的 YUV 图像lum像素。

private suspend fun captureStill(): Image = suspendCoroutine { cont ->
val captureRequestStill = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE)
captureRequestStill.addTarget(imageReaderYUV.surface)
imageReaderYUV.setOnImageAvailableListener({ cont.resume(imageReaderYUV.acquireLatestImage()) }, backgroundHandler)
cameraCaptureSession.capture(captureRequestStill.build(), null, backgroundHandler)
}

我错过了什么吗?我之前是否破坏了设置的某些方面? setOnImageAvailableListener 是否不能捕获 YUV 图像?

See the full setup dance in one suspend-enabled function

最佳答案

在设置相机预览时,您隐式选择了一些预览尺寸。一般来说,您的捕获可以使用不同的大小(即使是 YUV,它本质上也是预览缓冲区)。

但在许多设备上,预览和捕获大小的不协调选择效果不佳。常见的现象是您必须选择预览尺寸和 Jpeg 捕获尺寸以具有相同的纵横比。我强烈建议您对 YUV 也遵循这种做法。

您可以使用 SurfaceTexture.setDefaultBufferSize如果您想让 TextureView 的大小适合总体布局。

关于Android camera2 createCaptureRequest 获取YUV_420_888图像时返回全黑像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52490242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com