求助,有关YUY2转BMP方面的问题
最近在弄wince下面的USB摄像头拍照,用的摄像头输出的是YUY2格式的,为了方便使用要转成BMP,按照网上搜到的YUY2转RGB的公式进行了转换,用网上的例子是对的,但是用拍到的就乱了,摄像头貌似没问题,用别人的软件能够摄像和截图,发现拍到的YUY2数据bit数比长度×宽度×2要小一些,个人感觉是不是错位了,求各位解惑。
另外就是YUY2的数据是不是分块的呢?网上的例子是分单双行存储显示的,我这的貌似是分的四块,有没有相关需要注意的地方,我的做法就是读进来YUY2 16bits的数据,然后转换RGB后按照给定的长宽画在DC上
[解决办法]
不同的颜色数没像素的bit数不同 http://bbs.csdn.net/topics/330035576
BITMAP 格式有行字节对齐 http://bbs.csdn.net/topics/390284489
[解决办法]
YUY2只是色彩系统,用4个字节表示两个RGB的值而已,你只要公式对了应该不会有太大的问题。
还有你有一个误区,YUY2不是 16bits 的数据 ,他是 32 bit 表示两个 RGB 值,
比如
Byte 1 Y0
Byte 2 U
Byte 3 Y1
Byte 4 V
这样一个排列
两个 RGB 分别是
rgb1.red = int((Y0 * 298 + V * 409 + 128)/(2^8))
rgb1.green = int((Y0 * 298 - U * 100 - V * 208 + 128)/(2^8))
rgb1.blue = int((Y0 * 298 + U * 516 + 128)/(2^8))
rgb2.red = int((Y1 * 298 + V * 409 + 128)/(2^8))
rgb2.green = int((Y1 * 298 - U * 100 - V * 208 + 128)/(2^8))
rgb2.blue = int((Y1 * 298 + U * 516 + 128)/(2^8))
这样一来,就可以把4个字节的YUY2值换算成6个字节的RGB数据了
[解决办法]
如果是分块的话,是否存在字节对齐。
最好取得摄像头输出YUY2格式的说明,否则只能不停尝试了。
[解决办法]
YUY2色彩系统:
Byte 1 Y0
Byte 2 U
Byte 3 Y1
Byte 4 V
这已经基本说明完全了,要公式上面也有了