3

我正在使用opencv,我必须将它集成到QtGui,但我在显示图像时遇到了一些问题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我将得到一个空窗口,我也尝试了所有格式,但这不是我想要的......关于如何解决这个问题的任何想法?

谢谢 !

4

1 回答 1

2

OpenCV 以 bgr 格式保存图像。这意味着交换像素的颜色值。如果将此行添加到程序中,图像将正确显示:

  img = img.rgbSwapped();
于 2013-07-18T10:36:14.417 回答