我目前正在使用Qt Creator工具。我想在主窗口中通过浏览硬盘来获取一张图片,并将RGB彩色图像转换为灰度图像,然后在另一个窗口中显示灰度图像。
点击“浏览”按钮可以加载彩色图像,接着将应用颜色到灰度图像的转换。这里,`grayImage`是一个公共的`Mat`类型变量。同时,将调用名为`SecondDialog`的另一个窗口实例进行执行。
在 seconddialog.cpp 中,我已经将 Mat 图像转换为 QImage 并显示在名为
当我运行这个程序时,没有编译错误,但第二个窗口中没有显示任何图像。 我无法确定我的代码是否有错误。如果有人能解决这个问题,那将非常有帮助。 提前致谢。
点击“浏览”按钮可以加载彩色图像,接着将应用颜色到灰度图像的转换。这里,`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;
}
当我运行这个程序时,没有编译错误,但第二个窗口中没有显示任何图像。 我无法确定我的代码是否有错误。如果有人能解决这个问题,那将非常有帮助。 提前致谢。