0

当我将 QImage 转换为 cv::Mat 时,Mat 变得模糊。

这是转换它的代码:

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));

这是放大后的原始图像:

这是创建的图像:

感谢任何帮助。

4

1 回答 1

1

我不知道 QT,但是您是否尝试过来自 WEB 的现成解决方案?例如,从这个链接我发现了另一种转换方法:

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;
};
于 2012-08-10T14:37:17.040 回答