如何在 android studio 中获取 camera2 api 中的每一帧,如 camera api 中的 PreviewCallback 和 camerax 中的 ImageAnalysis.Analyzer?
How can I get each frame in camera2 api in android studio like PreviewCallback in camera api and ImageAnalysis.Analyzer in camerax?
如何在 android studio 中获取 Camera2 api 中的每一帧,如 Camera api 中的 PreviewCallback 和 Camerax 中的 ImageAnalysis.Analyzer?我看了其他问题,但他们没有正确回答我的问题。
基本上,使用ImageReader。为 YUV_420_888 配置它,并让它的 Surface 用作相机会话配置的一部分。
然后将其 Surface 包含在您发送到相机的每个 CaptureRequest 中,并在 ImageReader.OnImageAvailableListener()
中处理新帧。
尝试使用以下代码。
val surface: Surface = imageReader.surface
val captureRequest = camera.createCaptureRequest(
CameraDevice.TEMPLATE_PREVIEW
).apply {
addTarget(surface)
addTarget(fragmentCameraBinding.viewFinder.holder.surface)
}
// This will keep sending the capture request as frequently as possible
until the session is torn down or session.stopRepeating() is called
session.setRepeatingRequest(captureRequest.build(), null, cameraHandler)
imageReader.setOnImageAvailableListener({ reader ->
val image = reader.acquireLatestImage()
Log.d(TAG, "Image available in queue: ${image.timestamp}")
image.close()
}, imageReaderHandler)
如何在 android studio 中获取 Camera2 api 中的每一帧,如 Camera api 中的 PreviewCallback 和 Camerax 中的 ImageAnalysis.Analyzer?我看了其他问题,但他们没有正确回答我的问题。
基本上,使用ImageReader。为 YUV_420_888 配置它,并让它的 Surface 用作相机会话配置的一部分。
然后将其 Surface 包含在您发送到相机的每个 CaptureRequest 中,并在 ImageReader.OnImageAvailableListener()
中处理新帧。
尝试使用以下代码。
val surface: Surface = imageReader.surface
val captureRequest = camera.createCaptureRequest(
CameraDevice.TEMPLATE_PREVIEW
).apply {
addTarget(surface)
addTarget(fragmentCameraBinding.viewFinder.holder.surface)
}
// This will keep sending the capture request as frequently as possible
until the session is torn down or session.stopRepeating() is called
session.setRepeatingRequest(captureRequest.build(), null, cameraHandler)
imageReader.setOnImageAvailableListener({ reader ->
val image = reader.acquireLatestImage()
Log.d(TAG, "Image available in queue: ${image.timestamp}")
image.close()
}, imageReaderHandler)