使用opencv打开映像,使用QFileDialog::getOpenFileName打开Qt

open image using opencv and Qt using QFileDialog::getOpenFileName

本文关键字:使用 getOpenFileName 打开 Qt QFileDialog opencv 映像      更新时间:2023-10-16

我创建了一个最简单的Gui,只有一个按钮可以使用Qt读取和显示图像,按钮的插槽是:

    void MainWindow::on_pushButton_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,
                                                    tr("Open image"),
                                                    tr("."),
                                                    tr("Image Files (*.png *.jpg *.jpeg *.bmp * .tif)"));
    image= cv::imread(fileName);
    cv::namedWindow("Original Image");
    cv::imshow("Original Image", image);
}

我有以下错误:

error: invalid initialization of reference of type 'const string& {aka const std::basic_string<char>&}' from expression of type 'QString'
     image= cv::imread(fileName);
                               ^

如何成功地使用QFileDialog类向imread传递有效路径?

正如您在opencv文档中看到的那样,必须按照如下方式使用imread方法:Mat cv::imread(常量字符串和文件名,int flags=IMREAD_COLOR);QString是一种仅与qt库兼容的字符串类型,因此必须将QString转换为string才能正确使用imread方法。

使用:imread(fileName.toStdString());