請留意:
opencv為3.0.0版本,Qt為4.8.4版本
1 #include"image1.h" 2 #include<QApplication> 3 #include<QImage> 4 #include<QDebug> 5 #include<opencv2/opencv.hpp> 6 7 int main(int argv , char* argc[] ){ 8 9 QApplication a(argv,argc); 10 QImage img; 11 cv::Mat mat = cv::imread("D:\\image\\4.png",true); 12 if(mat.empty()){ 13 14 qDebug()<<"load image fail!"; 15 return a.exec(); 16 } 17 int chana = mat.channels(); 18 //依據通道數不同,改變不同的裝換方式 19 if(3 == chana ){ 20 //調整通道次序 21 cv::cvtColor(mat,mat,CV_BGR2RGB); 22 img = QImage(static_cast<uchar *>(mat.data),mat.cols,mat.rows,QImage::Format_RGB888); 23 }else if(4 == chana ){ 24 //argb 25 img = QImage(static_cast<uchar *>(mat.data),mat.cols,mat.rows,QImage::Format_ARGB32); 26 }else { 27 //單通道,灰度圖 28 img = QImage( mat.cols, mat.rows , QImage::Format_Indexed8); 29 uchar * matdata = mat.data; 30 for(int row = 0 ; row <mat.rows ; ++row ){ 31 uchar* rowdata = img.scanLine( row ); 32 memcpy(rowdata,matdata ,mat.cols); 33 matdata+=mat.cols; 34 } 35 } 36 Image1 w ; 37 w.load(img); 38 w.show(); 39 return a.exec(); 40 }
效果圖:
用Qimage進行縮放:
當然也可以用opencv自帶的imshow進行顯示
