当我将 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));
这是缩放后的原始图像:
这是创建的图像:
感谢您的帮助。
最佳答案
我不懂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;
};
关于c++ - 将 Qimage 转换为 Mat opencv 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11903587/