这两天一直在研究转换排列之类的问题,现在正好有机会和大家讨论一下.
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结构的数函,载下地址如下:
http://download.csdn.net/detail/masikkk/5284161
调用方法也很简单:
QImage
image
=
MatToQImage(img); //img是Mat型类
文章结束给大家分享下程序员的一些笑话语录: 《诺基亚投资手机浏览器UCWEB,资金不详或控股》杯具了,好不容易养大的闺女嫁外国。(心疼是你养的吗?中国创业型公司创业初期哪个从国有银行贷到过钱?)