转换排列Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题

这两天一直在研究转换排列之类的问题,现在正好有机会和大家讨论一下.

    Qt中利用OpenCV表现图片和视频时,要需将OpenCV中的Mat或IplImage结构转换为Qt中QImage结构,

    转换时要需注意的地方是OpenCV中和Qt中关于三原色的排列的不同:OpenCV中是以BGR的顺序排列,

    Qt中是以RGB的顺序排列,两种格式在转换时如果没注意到这点,就会出现问题,如下图:

    转换排列Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题_第1张图片

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

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

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

    

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

cvCvtColor(&img,&img,CV_BGR2RGB); //img是IplImage型类
    每日一道理
试试看——不是像企鹅那样静静的站在海边,翘首企盼机会的来临,而是如苍鹰一般不停的翻飞盘旋,执著的寻求。 试试看——不是面对峰回路转、杂草丛生的前途枉自嗟叹,而是披荆斩棘,举步探索。 试试看——不是拘泥于命运的禁锢,听凭命运的摆布,而是奋力敲击其神秘的门扉,使之洞开一个新的天地。微笑着,去唱生活的歌谣。
这里还有个更好的方法,是网上一个大神写的专门将Mat结构转换为QImage结构的数函,载下地址如下:
http://download.csdn.net/detail/masikkk/5284161
调用方法也很简单:
QImage

    image

    =

    MatToQImage(img); //img是Mat型类

 

    

    

    

文章结束给大家分享下程序员的一些笑话语录: 《诺基亚投资手机浏览器UCWEB,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)

你可能感兴趣的:(opencv)