从前面的bmp文件格式以及YUV的格式介绍中,我们已经知道了两种文件之间的差异。再从网上找到YUV与RGB之间的换算关系:
Y = 0.257R + 0.504G + 0.098B + 16
U = -0.148R - 0.291G + 0.439B + 128
V = 0.439R - 0.368G - 0.071B + 128
好,现在准备工作已经差不多了。需要的就是整理一下思路了。
目的:将RGB888文件(即24位bmp) 转换为 YUV422(UYVY)
过程:RGB888 =》 YUV =》 YUV422 (注:中间的YUV就是按照上面的公式进行RGB到YUV的转换,但是格式上还不是YUV格式,所以还需要再次转换成YUV422。)
好,下面就可以累长城了。
RGB到YUV转换的代码如下:
Open strRGBfile For Binary As #1
Open strYUVfile For Binary As #100
'BMP 54个字节之后的是像素数据
lengRGB = rgbHeight * rgbWidth * 3
ReDim rgbContent(lengRGB - 1) '重定义数组,为读取文件做准备
Get #1, 55, rgbContent() '取得第一文件的内容到数组
Dim i,