帮朋友做一个视频采集和基本处理功能,要求的是.bmp格式
几天下来,通过directshow进行视频采集,并抓去图片保存,按照要求进行业务处理,以前的处理程序是基于RGB24
而显示器是32位真彩色,后调整directshow 的grab filter,修改媒体类型,pmt->majortype = MEDIATYPE_Video;
pmt->subtype = MEDIASUBTYPE_RGB24; 结果在业务中效果不理想,为既保留32位图,也生成rgb24位图
硬是将BITMAPINFOHEADER *lpbi 中的值进行强行设置lpbi->biBitCount = 24;
结果是:产生的图片带有间断性的彩色条纹
然后再在谷歌、摆渡中继续游泳,没有实质性进展
无奈,进微软msdn、gdi+...
接下来的两天就是恶补BMP知识,发现彩色条纹应该是RGB32位颜色空间值,对于RGB32与RGB24,它们的像素点空间只差了一个字节,
继而,自行转换数据
首先是从directshow中获取图像数据
其次是,保留获取数据的文件头
然后是转换位图数据内容,并将内容另置空间
最后设定BITMAPFILEHEADER文件头,并写文件,
为备忘,具体实现如下:
TRY
{
BYTE *buffer = NULL;
hr