我已經開始編輯RaspiStillYUV.c代碼。我最終想要處理我收到的圖像,但現在,我只是在努力理解它。爲什麼我使用YUV而不是RGB?所以我可以學到新的東西。我對功能camera_buffer_callback
做了一些小修改。所有我做的是以下幾點:在代碼中設置YUV緩衝區結尾的額外字節 - RaspberryPi
現在,尺寸應2592 x 1944
(寬x高):這是更換
fprintf(stderr, "GREAT SUCCESS! %d\n", buffer->length);
線。關閉維基百科(YUV420)我得出結論,文件大小應該是w * h * 1.5
。由於Y分量對於每個像素具有1個字節的數據,並且U和V分量對於每4個像素具有1個字節的數據(1 + 1/4 + 1/4 = 1.5)
。大。做數學在Python:
>>> 2592 * 1944 * 1.5
7558272.0
不幸的是,這不符合我的程序的輸出排隊:
GREAT SUCCESS! 7589376
剩下的31104
字節的差異。
我認爲緩衝區是以固定大小的塊(輸出大小可以被512整除)分配的。雖然我想了解這個謎,但我對固定大小的塊解釋很好。
我的問題是如果我失去了一些東西。在這種格式下超出預期大小的額外字節是否有意義?他們應該被忽略嗎?我的計算關閉了嗎?
這是相當普遍的yuv緩衝區有未使用的尾隨字節,但我不知道樹莓特定的細節。 –
對於其他人看到這一點。我已經切換到SimpleCV和Python。我的(不是太重)改進的RaspiStillYUV代碼在8秒內完成了大約10張圖片。 SimpleCV正在做〜7每秒。兩個樣本都是在沒有額外處理的情況下進行的您可以使用uv4l驅動程序將相機作爲視頻設備使用,以便與SimpleCV一起使用。 – douggard