我正在使用 opencv
我必须将它整合到 Qt
Gui,但我在 Qt
中显示图像时遇到了一些问题...
这是我正在使用的代码
#include <QApplication>
#include <QtGui>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
QImage const Mat2QImage(const cv::Mat& src){
return QImage((unsigned char*)src.data, src.cols, src.rows, src.step, QImage::Format_RGB888);
}
int main(int argc, char **argv){
QApplication app(argc, argv);
cv::Mat src = cv::imread("lena.jpg");
QLabel aLabel;
QImage img = Mat2QImage(src);
aLabel.resize(src.rows, src.cols);
aLabel.setPixmap(QPixmap::fromImage(img));
aLabel.show();
return app.exec();
}
结果如下:
请注意,如果我将格式更改为 QImage::FormatRGB32
我会得到一个空窗口,我也尝试了所有格式,但这不是我想要的......
关于如何解决问题的任何想法?
谢谢!
最佳答案
OpenCV 将图像保存为 bgr 格式。这意味着像素的颜色值被交换。 如果将此行添加到您的程序中,图像将正确显示:
img = img.rgbSwapped();
关于c++ - cv::Mat 到 QImage 的转换无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17720298/