歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Qt中使用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結構的函數,下載地址如下:

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

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2013年資料/4月/22日/Qt中使用OpenCV顯示圖片時,Mat結構轉換為QImage結構的問題/

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

調用方式也很簡單: QImage image = MatToQImage(img); //img是Mat類型

Copyright © Linux教程網 All Rights Reserved