2012-08-10 116 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