Android Camera2 ImageReader 图像格式 YUV

Posted

技术标签:

【中文标题】Android Camera2 ImageReader 图像格式 YUV【英文标题】:Android Camera2 ImageReader Image Format YUV 【发布时间】:2017-01-06 03:03:47 【问题描述】:

我有一个可以进行运动检测和视频录制的 android 应用程序。它同时支持 Camera 和 Camera2 API,以提供向后兼容性。我正在使用带有 Camera2 API 的 ImageReader 来进行运动检测。我目前正在请求 JPEG 格式的图像,这非常慢。我知道请求 YUV 图像会更快,但是 YUV 格式是否会因使用的设备而异?我只是想在我放弃优化之前检查一下。

【问题讨论】:

【参考方案1】:

所有设备都将支持旧相机 API(自 API 12 起)的 NV21 和 YV12 格式,对于 camera2,所有设备都将支持 YUV_420_888。

YUV_420_888是一种灵活的YUV格式,因此可以表示多种底层格式(包括NV21和YV12)。因此,您需要从 ImageReader 检查图像中的像素和行步长,以确保您正确读取 3 个数据平面。

如果您需要全帧率,则需要在 YUV 中工作 - JPEG 有很多编码开销,并且通常不会以 2-10fps 的速度运行,而 YUV 在预览分辨率下至少会以 30fps 的速度运行。

【讨论】:

我通过仅使用 Y 并使用设备的最小图像尺寸使其工作。【参考方案2】:

我通过仅使用亮度 (Y) 值解决了这个问题,其格式在设备之间没有变化。出于运动检测的目的,黑白图像就可以了。这也解决了 API Level 21 上使用 ImageReader 时缺少一些 U 和 V 数据的问题。

【讨论】:

以上是关于Android Camera2 ImageReader 图像格式 YUV的主要内容,如果未能解决你的问题,请参考以下文章

Android Camera2 教程 · 第一章 · 概览

官方Android Camera2 录像示例--停止录像时崩溃修正

android.hardware.camera2.full 来自哪里?

如何实现Android平台GB28181设备对接Camera2数据

android camera2连拍

Android Camera2 拍照入门学习