我在 C++ 程序中的缓冲区大小方面遇到了一个小问题。
我使用 V4L2 从相机中抓取 YUYV 图像(有一个示例here http://linuxtv.org/downloads/v4l-dvb-apis/capture-example.html )
我想拍摄一张图像并将其放入我自己的图像结构中。
这是V4L2结构体给出的缓冲区及其大小
(uchar*)buffers_[buf.index].start, buf.bytesused
在我的结构中,我创建了一个新的缓冲区(mybuffer),其大小为 width*height*bitSize(字节大小为 4,因为我抓取 YUYV 或 YUV422 图像)。
问题是我期望缓冲区 buf 与我创建的缓冲区大小相同。但事实并非如此,例如当我抓取 640*480 图像 buf=614400 和 mybuffer=1228800 (两倍大)时。
有谁知道为什么会出现这种情况?
YUV422 uses 4 bytes per 2 pixels
In YUV422模式U
ans V
值在两个像素之间共享。图像中的字节顺序如下U0 Y0 V0 Y1 U2 Y2 V2 Y3
etc.
给出像素,例如:
pixel 0 U0Y0V0
pixel 1 U0Y1V0
pixel 2 U2Y2V2
pixel 3 U2Y3V2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)