2012-07-21 40 views
1

我有一個Android應用程序的想法,它依靠我實時處理來自手機相機的圖像(想想處理如Word Lens必須做的事情)。我想用Python在靜態圖像上運行原型,但我希望靜態圖像匹配通常從Android手機攝像頭接收的格式(我不想爲RGB製作算法然後找出Android的相機API給你HSV字節數組)。兩個問題:如何在Android相機圖像上運行原型算法?

  1. 什麼是格式? (或至少最常見的,因爲Android硬件變化)
  2. 如何在Linux上將我的jpg測試圖像轉換爲此格式?
+0

您的鏈接已死,我現在將其更改爲http://questvisual.com/us/。該頁面上的視頻演示了該應用程序。 – FoamyGuy 2012-07-21 23:48:51

回答

1

所有Android相機都需要支持兩種格式的YUV,NV21和YV12(見setPreviewFormat documentation),應用程序綁定回調的setPreviewCallback啓用。

某些設備可能支持其他格式(RGB,YUYV2等),但這兩個是強制性的,所以最好選擇其中一個。 YV12有更高的效率,儘管這取決於所討論的硬件。至於第二種,你可以使用ImageMagick這類應用程序進行顏色轉換,但關於這些格式的另一點是它們是針對色度(彩色)平面進行二次採樣的; NV21和YV12都在兩個維度上將顏色格式縮減2倍。例如,如果圖像尺寸是640x480,那麼Y(亮​​度)通道將是640x480,但U和V通道都只有320x240。您可能需要自己進行二次採樣,因爲大多數圖像庫不公開這種格式(JPEG圖像實際上通常以類似的二次採樣YUV格式存儲,但大多數庫轉換回全RGB,然後再給予數據)。

編輯:附加說明

另外,如果你的算法行之有效的GPU,你可以使用setPreviewTexture路徑拿出相機,它可以讓你在GPU的着色器處理圖像數據。在這種情況下,數據將始終爲RGB,作爲帶有OpenGL 2.0的GLSL着色器中的紋理進行訪問。

+1

爲什麼YV12有更高的效率?更常見的是硬件的原生格式? – 2012-07-22 04:28:31

相關問題