设为首页 加入收藏

TOP

Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题
2014-11-24 07:35:00 来源: 作者: 【 】 浏览:0
Tags:使用 OpenCV 显示 图片 Mat 结构 转换 QImage 问题

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



上图是读取的美剧《总统一家》中的一集,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类型


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇TX2440 裸跑实验-汇编C语言混编(A.. 下一篇Qt中通过设置位图掩码生成异形控..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 并发工具类:提 (2025-12-25 20:25:44)
·Java面试技巧:如何 (2025-12-25 20:25:41)
·Java并发编程中的线 (2025-12-25 20:25:38)
·C 语言 - cppreferen (2025-12-25 19:50:27)
·《C 语言入门教程》 (2025-12-25 19:50:23)