私は現在Qtの作成者に取り組んでいます。メインウィンドウのハードドライブからブラウズしてイメージを取得し、RGBカラーイメージをグレーイメージに変換した後、グレーイメージを別のウィンドウに表示したいとします。mainwindowのイメージをC++とQTの別のウィンドウに表示するには?
「ブラウズ」ボタンをクリックすると、カラーからグレイのイメージ変換が適用される場所にカラーイメージをロードできます。ここではgrayImage
はパブリックMatタイプの変数です。同時に、SecondDialog
という名前の別のウィンドウのインスタンスが呼び出されて実行されます。 seconddialog.cppで
void MainWindow::on_Browse_clicked()
{
QFileDialog dialog(this);
dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));
dialog.setViewMode(QFileDialog::Detail);
fileName = QFileDialog::getOpenFileName(this, tr("Open Images"), "/home/rpi/Desktop/Picture/Sample Pictures", tr("Image Files (*.png *.jpg *.bmp)"));
if (!fileName.isEmpty())
{
String image_path=fileName.toLocal8Bit().constData();
Mat image= imread(image_path);
cvtColor(image, grayImage, CV_BGR2GRAY);
SecondDialog obj;
obj.setModal(true);
obj.exec();
}
}
、私はQLabelに表示するQImageのにマットの画像を変換している私は、このプログラムを実行すると、そこには、コンパイル・エラーがありませんが、それはlabel_img
SecondDialog::SecondDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SecondDialog)
{
ui->setupUi(this);
MainWindow object;
Mat src= object.grayImage;
Mat temp(src.cols,src.rows,src.type());
QImage dest((const uchar *) temp.data, temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
dest.bits();
ui->label_img->setPixmap(QPixmap::fromImage(dest));
}
SecondDialog::~SecondDialog()
{
delete ui;
}
の名前2番目のウィンドウに画像が表示されるようになりました。 私のコードに間違いがあるかどうかはわかりません。誰かがこの問題を解決できるなら、本当に役に立ちます。 ありがとうございます。
私はちょうどあなたの解決策に従って試しました。しかしそれはまだ表示されていません。 – Gansroy
私はgithubアカウントにこれを追加しました。プログラムは次のリンクにありますgithub.com/ashraful100/DisplayImageもう一度ありがとうございます。 – Gansroy