读书人

用directshow擒获视频文件帧数据后用l

发布时间: 2013-06-25 23:45:42 作者: rapoo

用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楼

读书人网 >C语言

热点推荐