2015-08-23 61 views
-1

我正在使用camera2 api捕获图像的突发。为了确保最快的捕捉速度,我目前正在使用yuv420888。如何从Android图像获取像素值

(JPEG导致约3 fps的拍摄,而在约30fps的YUV结果)

那么,我问的是我怎么能访问YUV值图像中的每个像素。

Image image = reader.AcquireNextImage(); 
Pixel pixel = image.getPixel(x,y); 
pixel.y = ... 
pixel.u = ... 
pixel.v = ... 

此外,如果其他格式会更快请让我知道。

+0

发布更多验证码。 –

回答

0

如果你看Image课程,你会看到即时答案只是.getPlanes()方法。

当然,对于YUV_420_888,这将产生YUV数据的三个平面,为了获得任何给定位置的像素值,您将不得不做一些工作,因为U和V通道已被下采样,可能会被隔行扫描以储存在Image.Plane中。但这超出了这个问题的范围。

此外,你是正确的,YUV将是你的相机最快的可用输出。 JPEG需要额外的时间进行编码,这会降低流水线输出的速度,RAW非常大,因为它们非常大而需要花费大量时间进行读取。 YUV(无论什么类型)是大多数摄像机流水线工作的数据格式,因此它是“原生”输出,因此是最快的。

+0

让像素值最终变得相当容易,只需要认识到它是8位,并且只是依次读取每个字节的y,u和v平面。 – Cjen1