2013-07-30 14 views
5

Ich versuche OpenCV in Qt Creator einzurichten und ich habe einige Probleme. Ich fügte hinzu, die OpenCV-Pfad in der Qt Creator .proDateiOpenCV in Qt Creator einrichten 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 

Und ich will und Bild in diesem Code lesen

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(); 
} 

Als ich mein Projekt und führen es die folgende Meldung zeigt:

Starten/Home/vasan/Qt/Build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt ...
Das Programm wurde unerwartet beendet.
/home/Vasan/Qt/build-OpenCVWithQt-desktop-Debug/OpenCVWithQt verlassen mit dem Code 0

+0

Wo ist LP.jpg? In den Ressourcen? –

+0

Wenn Sie also im Debug-Modus laufen, stürzt es in der Zeile 'cv :: Mat matInput = cv :: imread (" LP.jpg ") ab;', oder? –

+0

Ja, LP.jpg in meinem Projektordner. Wenn ich opencv code d. H. Mat, imread, imshow lösche, kann ich GUI-Fenster anzeigen und ausführen. – vasan

Antwort

3

Ich habe auch ein paar Tage OpenCV für Qt Creator einzurichten jetzt versucht. Ich würde Ihnen empfehlen, das Verfahren versuchen, gefunden bei

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

Es ist einfach zu folgen, und es funktioniert einfach. Wenn Sie zu Abschnitt 1.3 kommen, führen Sie alle verfügbaren Codebeispiele aus. Ich benutzte:

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; 
} 

Hoffe, dass hilft!

0

Ihr Code ist korrekt. Ich denke, dass das Problem entsteht, weil Sie Schattenbildung verwenden. Aus diesem Grund sollten Sie das Bild in den Schattenordner (den Ordner, der die ausführbare Datei enthält) und nicht in den Projektordner (der nur die Codedateien enthält) einfügen.

Ein weiterer Tipp ist eine Rückkehr Anweisung in dem wenn Fall einfügen, so Programm wird nicht beendet, wenn es das Bild nicht finden.

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

auch sicher, dass die folgenden Header

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

Es funktionierte für mich enthalten:

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