2013-07-30 14 views
5

OpenCVをQt Creatorでセットアップしようとしていますが、いくつか問題があります。私はQtの創造主.PROファイルQt CreatorでOpenCVを設定するUbuntu 12.04

INCLUDEPATH += /usr/local/include/opencv 
LIBS += -L/usr/local/lib \ 
-lopencv_core \ 
-lopencv_imgproc \ 
-lopencv_highgui \ 
-lopencv_ml \ 
-lopencv_video \ 
-lopencv_features2d \ 
-lopencv_calib3d \ 
-lopencv_objdetect \ 
-lopencv_contrib \ 
-lopencv_legacy \ 
-lopencv_flann 

でOpenCVのパスを追加し、私は自分のプロジェクトを実行すると、それは次のようなメッセージを示し、このコード

void MainWindow::on_pushButton_clicked() 
{ 
    cv::Mat matInput = cv::imread("LP.jpg"); 
    if(matInput.empty()) 
    { 
      std::cout<<"Can't load image "<<std::endl; 
    } 
    cv::namedWindow("Show"); 
    cv::imshow("Show", matInput); 
    cv::waitKey(); 
} 

でshow画像を読み込み、したい:

Starting/home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt ...
プログラムが予期せず終了しました。
/ホーム/ vasan/Qtは/ビルドOpenCVWithQt - デスクトップ - デバッグ/ OpenCVWithQtはコード0

+0

どこLP.jpgはありますか?リソースですか? –

+0

デバッグモードで実行すると、 'cv :: Mat matInput = cv :: imread(" LP.jpg ");'という行でクラッシュします。 –

+0

はい、LP.jpgは私のプロジェクトフォルダにあります。私がopencvコード、つまりMat、imread、imshowを削除したら、ビルドして実行するとGUIウィンドウを表示できます。 – vasan

答えて

3

で終了しました、私は今も数日間のQt CreatorをのためのOpenCVを設定しようとしています。私は、従うことは簡単です、それはちょうどWORKS

https://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation

で発見手続きをしようとあなたをお勧めします。セクション1.3に到達したら、手元にあるコードサンプルを実行します。私は使用しました:

int main(int argc, char** argv) 
{ 
    if(argc != 2) 
    { 
    cout <<" Usage: display_image ImageToLoadAndDisplay" << endl; 
    return -1; 
    } 

    Mat image; 
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR); // Read the file 
    image = imread("lena.png", CV_LOAD_IMAGE_COLOR); // Read the file 
    if(! image.data)        // Check for invalid input 
    { 
     cout << "Could not open or find the image" << std::endl ; 
     return -1; 
    } 

    namedWindow("Display window", CV_WINDOW_AUTOSIZE);// Create a window for display. 
    imshow("Display window", image);     // Show our image inside it. 

    waitKey(0);           // Wait for a keystroke in the window 
    return 0; 
} 

希望に役立ちます!

0

コードは正しいです。シャドウビルを使用しているので問題が発生したと思います。このため、シャドウビルディングフォルダー(実行可能ファイルを含むフォルダー)にイメージを置いてください(コードファイルのみを含む)プロジェクトフォルダーにイメージを置く必要があります。

もう一つのヒントは、かの場合にはリターン文を挿入することがあるので、それがイメージを見つけることができなかったときにプログラムが終了しません。

if(matInput.empty()) 
{ 
     qDebug() << "Can't load image"; 
     return; 
} 

また、それは私のために働いた次のヘッダー

#include <QDebug> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
2

を必ず含めてください:

INCLUDEPATH += /usr/local/include/opencv2 
LIBS += -L/usr/local/lib 
LIBS += -lopencv_core 
LIBS += -lopencv_imgproc 
LIBS += -lopencv_highgui 
LIBS += -lopencv_ml 
LIBS += -lopencv_video 
LIBS += -lopencv_features2d 
LIBS += -lopencv_calib3d 
LIBS += -lopencv_objdetect 
LIBS += -lopencv_contrib 
LIBS += -lopencv_legacy 
LIBS += -lopencv_flann 
LIBS += -lopencv_nonfree 
関連する問題