我正在使用 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 的转换。 .
令人惊讶的是,结果是一张奇怪的紫色/绿色图片。所以 YUYV 似乎与 YUV422 有所不同(并且还存在一种像素格式 V4L2_PIX_FMT_YUV422P,它是/不一样?)。
所以我现在很困惑:如何将 V4L2_PIX_FMT_YUYV 位图转换为真正的 RGB24?有没有例子?
最佳答案
评论太长了...
4:2:2 不是像素格式,它只是关于如何对色度数据进行二次采样的表示法。根据 linuxtv-link,V4L2_PIX_FMT_YUYV 与 YUYV 或 YUY2 相同。 关于该主题的最终引用是 http://www.fourcc.org .在 http://www.fourcc.org/yuv.php#YUYV 查看关于 YUY2 的内容
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 转换的正确公式。
如果您需要进一步的帮助,请从那里获取并给我发表评论...
关于linux - V4L2_PIX_FMT_YUYV : convert from YUYV to RGB24?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176415/