我正在開發一個Android應用程序,它爲從相機傳遞的每個YUV圖像,它隨機選取10個像素並檢查它們是紅色還是藍色。 我知道如何做到這一點的RGB圖像,但不是爲YUV格式。 由於運行時間限制,我無法將其逐像素轉換爲RGB圖像。YUV圖像處理
YUV圖像處理
回答
我假設你正在使用Camera API的預覽回調函數,其中你爲每個幀獲得一個byte []數據數組。
首先,您需要選擇要使用的YUV格式。需要支持NV21,並且自Android 3.0以來需要YV12。沒有其他格式保證可用。所以NV21是最安全的選擇,也是默認選擇。
這兩種格式都是YUV 4:2:0格式;顏色信息在兩個維度上都以2x進行二次採樣,並且圖像數據的佈局與標準交錯RGB格式相當不同。 FourCC.org's NV21 description作爲一個來源,具有您想要的佈局信息 - 首先是Y平面,然後是UV數據交錯。但是由於兩個顏色平面只是Y平面尺寸的四分之一,所以您必須決定如何對它們進行上採樣 - 最簡單的就是最近的鄰居。所以,如果你想像素(X,Y)的大小的圖像(W,H),最近的鄰居的做法是:
Y = image[ y * w + x];
U = image[ w * h + floor(y/2) * (w/2) + floor(x/2) + 1]
V = image[ w * h + floor(y/2) * (w/2) + floor(x/2) + 0]
更復雜的採樣(雙線性,立方等)的色度通道可以也可以使用,但什麼是合適的取決於應用程序。
一旦你有YUV像素,你需要解釋它。如果您在RGB中操作更加舒適,則可以使用這些JPEG轉換方程Wikipedia來獲取RGB值。
或者,您可以使用較大的V(Cr)正值來表示紅色,特別是如果U(Cb)較小。
非常感謝你的先生 –
YUV只是另一種顏色空間。您可以在YUV空間中定義紅色,就像在RGB空間中一樣。一個簡單的calculator建議在YUV空間中RGB值255.0,0(紅色)應該顯示爲類似於76,84,255的東西,所以只需尋找與之相近的東西即可。
請解釋downvotes。 –
@LonelyCoder - 曾經有一段時間,一個追蹤者對我的所有帖子進行了低估 - 這可能是原因。 – OldCurmudgeon
從魯本Scratton的答案 Converting YUV->RGB(Image processing)->YUV during onPreviewFrame in android?
可以使相機預覽使用RGB格式而不是YUV。
試試這個:
RGB_565不保證被支持。您需要首先檢查getSupportedPreviewFormats(http://developer.android.com/reference/android/hardware/Camera.Parameters.html#getSupportedPreviewFormats())以查看它是否已列出。 –
我的三星Galaxy S3確實不支持RGB格式 –
- 1. 如何處理yuv文件
- 2. 裁剪YUV圖像
- 3. Android的YUV圖像格式
- 4. 圖像處理
- 5. 圖像處理
- 6. 圖像處理
- 7. 圖像處理
- 8. 圖像處理
- 9. 圖像處理
- 10. 圖像處理
- 11. 圖像處理
- 12. 圖像處理
- 13. Android OpenGL ES處理yuv預覽爲RGBA
- 14. 如何處理RGB到YUV轉換
- 15. 打印YUV圖像的像素值
- 16. Yuv(NV21)圖像轉換爲位圖
- 17. 圖像處理蟒
- 18. Python圖像處理
- 19. OCR圖像處理
- 20. Modis圖像處理
- 21. PHP圖像處理
- 22. 圖像處理PHP
- 23. OpenCV圖像處理
- 24. jQuery圖像處理
- 25. MATLAB(圖像處理)
- 26. JPG圖像處理
- 27. 圖像處理庫
- 28. Tiff圖像處理
- 29. Sobel圖像處理
- 30. 圖像處理Iphone
你如何定義一個顏色是紅色或藍色,在RGB?您是否已經檢查過YUV的基礎知識,例如http://software.intel.com/sites/products/documentation/hpc/ipp/ippi/ippi_ch6/ch6_color_models.html? – mmgp