【发布时间】:2017-10-01 22:51:21
【问题描述】:
我目前正在开发 Qt 创建器。我想通过从主窗口中的硬盘浏览来获取图像,然后将 RGB 彩色图像转换为灰色图像后,我想在另一个窗口中显示灰色图像。
通过单击“浏览”按钮,可以加载彩色图像,其中将应用彩色到灰色图像的转换。这里grayImage 是一个公共 Mat 类型变量。同时会调用另一个名为SecondDialog的窗口实例来执行。
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();
}
}
在 seconddialog.cpp 中,我已将 Mat 图像转换为 QImage 以显示在名为 label_img 的 QLabel 上
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;
}
当我运行这个程序时,没有编译错误,但它现在在第二个窗口中显示任何图像。 我无法弄清楚我的代码是否有任何错误。如果有人能解决这个问题,那将非常有帮助。 提前致谢。
【问题讨论】:
-
我刚刚按照你的解决方法试过了。但它仍然没有显示。
-
我刚刚在我的 github 帐户中添加了这个。这些程序可以在以下链接中找到 github.com/ashraful100/DisplayImage 再次感谢。