0

私は Qt と OpenCV を初めて使用します。HD で画像を読み取って表示しようとしています。これは特定の画像ではなく、プログラムはユーザーが選択した任意の画像を読み取ることができます。私のコード:

QString Imagename = QFileDialog::getOpenFileName(
                this,
                tr("Open Images"),
                "C://",
                tr("Tiff Files (*.tif);; Raw file (*.raw)"));

 if ( Imagename.isNull())
    {
         QMessageBox::warning(this,"Error!","Image not valid!");
    }


    cv::Mat src(filename);

Mat の設定は: Mat imread(const string& filename, int flags=1 )

どうすればこれを解決できますか?

4

2 に答える 2

0

使用したように cv::Mat 変数を使用することはできません。この問題を解決するには、「imread」関数を使用する必要があります。次のコードがこの問題の解決に役立つと思います。次のライブラリを含める必要があります。

    #include<QFileDialog>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <iostream>

    int main (){
    // Gets file name with QFileDialog
    QString file_name=QFileDialog::getOpenFileName(this,"Open Image File","C://","Image File (*.jpg *.tiff *.png *.bmp)"); 

    // Read image with Color Image Parameter and store on image variable which type is cv::Mat
    // You should convert file name from QString to StdString to use in imread function
    cv::Mat image = cv::imread(file_name.toStdString(),CV_LOAD_IMAGE_COLOR); 

   if(!image.data){   // Checks whether the image was read successfully 
      qDebug()<< "Could not open or find the image";  
      return -1;
                  }

    cv::namedWindow("Original Image",WINDOW_AUTOSIZE); // Creates a window which will display image 
    cv::imshow("Original Image",image);     // Shows image on created window

    cv::waitKey(0);    // Waits for a keystroke in the window
    return 0;  // if you created console app in qt you should use return a.exec() instead of this.
}
于 2015-12-27T13:17:01.157 に答える