首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用directshow擒获视频文件帧数据后用libjpeg保存到jpg图片中,图片颜色失真

2013-06-25 
用directshow捕获视频文件帧数据后用libjpeg保存到jpg图片中,图片颜色失真用IMediaDet::GetBitmapBits接口

用directshow捕获视频文件帧数据后用libjpeg保存到jpg图片中,图片颜色失真
用IMediaDet::GetBitmapBits接口从一个视频文件获得图片后保存为bmp格式的图片是没有问题的。bmp图片如下
用directshow擒获视频文件帧数据后用libjpeg保存到jpg图片中,图片颜色失真

用了libjpeg库保存为jpg图片却是这样的
用directshow擒获视频文件帧数据后用libjpeg保存到jpg图片中,图片颜色失真

我查了一下,有人提到可能从接口获得的帧是BGR的,而libjpeg需要的RGB格式的。所以我把红蓝对调了一下



这是为什么呢?难道是我处理代码有错误?

ps:已知从IMediaDet::GetBitmapBits接口获得的帧数据每个像素3个字节。
[解决办法]
struct fb_var_screeninfo 那里面有字段貌似
[解决办法]
libjpeg里面有输出流时的大小设置,你可以试试,你这种图片的原因应该是RGB颜色空间对应的位置不对,可能需要调一下,我也碰见过,参2楼

热点排行