2012-08-10 232 views
0

當我將QImage轉換爲cv :: Mat時,Mat變得模糊。將Qimage轉換爲Mat時出錯opencv

這是其轉換的代碼:

QPixmap pixmap(*ui->imgLabel->pixmap()); 
QImage image = pixmap.toImage(); 

image.convertToFormat(QImage::Format_RGB888); 

Mat matImage = Mat(image.height(), image.width(), CV_8UC3, image.scanLine(0)); 

這是原始圖像縮放:

這是所創建的圖像:

感謝一位呃幫助。

+0

一個是顏色,一個是b/w是故意的? – 2012-08-10 14:24:34

+0

你試過[這個](http://stackoverflow.com/questions/5810970/get-raw-data-from-qimage) – go4sri 2012-08-11 07:03:38

回答

0

我不知道QT,但你有沒有嘗試過從WEB準備好的解決方案?例如,從this link我發現了另一種轉換方法:

Mat qimage2mat(const QImage& qimage) { 
    cv::Mat mat = cv::Mat(qimage.height(), qimage.width(), CV_8UC4, (uchar*)qimage.bits(), qimage.bytesPerLine()); 
    cv::Mat mat2 = cv::Mat(mat.rows, mat.cols, CV_8UC3); 
    int from_to[] = { 0,0, 1,1, 2,2 }; 
    cv::mixChannels(&mat, 1, &mat2, 1, from_to, 3); 
    return mat2; 
}; 
+0

Thankyou,我只是改變了一些參數 – user1576633 2012-08-14 10:30:43