Ubuntu で QT を使用して OpenCV を実行していますが、QLabel を使用して画像を表示する際に問題が発生しました。コードを使用する場合:(「画像」はdcrawによって作成されたマットです):
Mat img_display;
cv::cvtColor(image,img_display,CV_BGR2RGB);
imwrite("test.jpg",img_display);
QImage img=QImage("test.jpg"); // QImage assignment
QPixmap pixmap(QPixmap::fromImage(img));
widget.image_label->setPixmap(pixmap);
画像はカラーで出力され、期待どおりです。
ただし、.jpg ファイルではなく 'img_display' を使用するように QImage の割り当てを置き換えると、画像表示は原点の右側から始まり、表示された画像の右下を三角形で上書きします。この三角形は、画像の LHS から失われたビットの半分のように見えます。私が使用しようとしている割り当てコードは次のとおりです。
QImage img=QImage(
(uchar*)(img_display.data),
img_display.cols,
img_display.rows,
QImage::Format_RGB888);
画像は未加工の 18.2 MB の cr2 ファイルから取得され、dcraw によって作成されました。test.jpg は 3.1MB
フィードバックをいただければ幸いです。