2013-04-23 50 views
1

我使用Video4Linux2從網絡攝像頭捕獲圖像數據。該設備返回的像素格式爲V4L2_PIX_FMT_YUYV。根據http://linuxtv.org/downloads/v4l-dvb-apis/V4L2-PIX-FMT-YUYV.html,這與YUV422相同,所以我使用了基於http://paulbourke.net/dataformats/yuv/的描述的YUV422到RGB24轉換。V4L2_PIX_FMT_YUYV:從YUYV轉換爲RGB24?

令人驚訝的結果是一個奇怪的紫色/綠色圖片。因此,看起來YUYV與YUV422不同(並且還存在像素格式V4L2_PIX_FMT_YUV422P,它與/不是相同的?)。

所以,我現在完全混淆了:如何將V4L2_PIX_FMT_YUYV位圖轉換爲真實的RGB24?那裏有沒有例子?

回答

3

太長,加入了註釋......

4:2:2是不是像素格式,它僅僅是一個關於如何色度數據被二次採樣的符號。根據linuxtv-link,V4L2_PIX_FMT_YUYV與YUYV或YUY2相同。 關於這個問題的最終參考是http://www.fourcc.org。看看是怎麼說YUY2在http://www.fourcc.org/yuv.php#YUYV

 Horizontal Vertical 
Y Sample Period 1 1 
V Sample Period 2 1 
U Sample Period 2 1 

要驗證輸入格式的確是YUYV你可以使用一個觀衆我用SDL寫的;其本身支持這個格式(除了別的以外)

https://github.com/figgis/yuv-viewer

http://www.fourcc.org/fccyvrgb.php也請參閱用於RGB/YUV變換正確公式。

從那裏,如果你需要進一步的幫助,請給我留言...

+0

您的YUV觀衆不編譯對最新的SDL。 :( – EthanB 2015-06-03 01:28:50

+0

由於我的查看器是基於SDL1.2的,所以我期望這個版本有更簡單的版本,可以在SDL2.0上運行,但並沒有將它推到github上 – 2015-06-03 06:34:31

+1

查看https://github.com/figgis/yuv -viewer2用於基於SDL2的查看器。 – 2015-07-04 21:15:12