qt linux image 显示不了,Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题...

Qt中利用OpenCV显示图片和视频时,需要将OpenCV中的Mat或IplImage结构转换为Qt中QImage结构,转换时需要注意的地方是OpenCV中和Qt中关于三原色的排列的不同:OpenCV中是以BGR的顺序排列,Qt中是以RGB的顺序排列,两种格式在转换时如果没注意到这点,就会出现问题,如下图:

f29badaf97f695c095e31d309e9e3407.png

上图是读取的美剧《总统一家》中的一集,mkv格式的(OpenCV2中增加了对更多视频格式的支持),右边的色彩还原是正确的。

可以看到,由于OpenCV中是BGR排列,Qt中是RGB排列,如果没有经过转换,直接构造QImage对象的话,红色通道和蓝色通道会发生对调:

最直观的,上图中第一夫人的红裙在左边成了蓝色的。

转换 的方法就是调用OpenCV中的cvCvtColor函数,如下形式

cvCvtColor(&img,&img,CV_BGR2RGB); //img是IplImage类型

这里还有个更好的方法,是网上一个大神写的专门将Mat结构转换为QImage结构的函数,下载地址如下:

---------------------------------------------------------------

具体下载目录在 /2013年资料/4月/22日/Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题/

---------------------------------------------------------------

调用方式也很简单: QImage image = MatToQImage(img); //img是Mat类型0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值