3

私は作業しており、それをGuiopencvに統合する必要がありますが、画像を表示するのに問題があります...QtQt

これが私が使用しているコードです

#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::FormatRGB32I will get an empty window に変更すると、すべてのフォーマットも試しましたが、期待していたものではなかったことに注意してください...問題を解決する方法について何か考えはありますか?

ありがとう !

4

1 に答える 1

2

OpenCV はイメージを bgr 形式で保存します。これは、ピクセルのカラー値がスワップされることを意味します。この行をプログラムに追加すると、画像が正しく表示されます。

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