解释来自格式为 ImageFormat.Private 的 ImageReader 的数据
Interpreting data from an ImageReader with format ImageFormat.Private
我已经针对 ImageReader 对象的表面设置了一个 ConstrainedHighSpeedCaptureSession。我的目标是捕捉一小段高 FPS 镜头,我想进一步处理(例如,找到物体的加速度)。
HighSpeedCapture 会话仅在 ImageReader 的格式设置为 ImageFormat.PRIVATE 时起作用——这是在 android.hardware.camera2.utils.SurfaceUtils.checkHighSpeedSurfaceFormat
中强制执行的,比较 android source。我知道 PRIVATE 格式是特定于实现的,因此无法直接解释原始字节,但是,实现应该知道如何将此图像格式转换为某种标准格式,这正是我需要的。
目前,我只是对捕获的图像通过 ImageReader.OnImageAvailable
回调可用做出反应。
一定有某种方法可以解释 PRIVATE 格式的 ImageReader,也许数据可以在后台渲染到某些 Canvas 或不同的 Surface。
您可以使用 Vulkan to import images with private format. You'll need to import android HardwareBuffer memory to vulkan and use a sampler with Y′CBCR conversion configured with VkExternalFormatANDROID.
我想在OpenGL中也应该有类似的方法可以导入这样的图像,但我没有用过。
我已经针对 ImageReader 对象的表面设置了一个 ConstrainedHighSpeedCaptureSession。我的目标是捕捉一小段高 FPS 镜头,我想进一步处理(例如,找到物体的加速度)。
HighSpeedCapture 会话仅在 ImageReader 的格式设置为 ImageFormat.PRIVATE 时起作用——这是在 android.hardware.camera2.utils.SurfaceUtils.checkHighSpeedSurfaceFormat
中强制执行的,比较 android source。我知道 PRIVATE 格式是特定于实现的,因此无法直接解释原始字节,但是,实现应该知道如何将此图像格式转换为某种标准格式,这正是我需要的。
目前,我只是对捕获的图像通过 ImageReader.OnImageAvailable
回调可用做出反应。
一定有某种方法可以解释 PRIVATE 格式的 ImageReader,也许数据可以在后台渲染到某些 Canvas 或不同的 Surface。
您可以使用 Vulkan to import images with private format. You'll need to import android HardwareBuffer memory to vulkan and use a sampler with Y′CBCR conversion configured with VkExternalFormatANDROID.
我想在OpenGL中也应该有类似的方法可以导入这样的图像,但我没有用过。