2015-08-23 66 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