user1576633
user1576633

Reputation: 167

Error when converting Qimage to Mat opencv

When I convert a QImage to cv::Mat the Mat comes out blurred.

This is the code that converts it:

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

This is the original image zoomed:

This is the image created:

Grateful for any help.

Upvotes: 0

Views: 2187

Answers (1)

ArtemStorozhuk
ArtemStorozhuk

Reputation: 8725

I don't know QT, but have you tried ready solutions from WEB? For example, from this link I found another method of conversion:

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

Upvotes: 1

Related Questions