请留意:
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进行显示