2013-04-23 435 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