2013-07-30 17 views
5

Sto provando a impostare OpenCV in Qt Creator e ho alcuni problemi. Ho aggiunto il percorso OpenCV in Qt Creator .pro file diConfigurazione di OpenCV in Qt Creator 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 

E voglio leggere e immagine spettacolo in questo codice

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

Quando eseguo il mio progetto mostra il seguente messaggio:

Inizio/home/vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt ...
Il programma è terminato in modo imprevisto.
/home/Vasan/Qt/build-OpenCVWithQt-Desktop-Debug/OpenCVWithQt terminato con il codice 0

+0

Dove è LP.jpg? Nelle risorse? –

+0

Quindi, se si esegue in modalità di debug, si blocca sulla riga 'cv :: Mat matInput = cv :: imread (" LP.jpg ");', giusto? –

+0

sì, LP.jpg nella cartella del mio progetto. Quando cancello il codice opencv i.e Mat, imread, imshow posso creare ed eseguirlo può mostrare finestre GUI. – vasan

risposta

3

Ho anche provando ad installare OpenCV per Qt Creator per un paio di giorni. Ti consiglierei di provare la procedura trovato alla

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

E 'semplice da seguire, e funziona da solo. Quando arrivi alla sezione 1.3, esegui qualsiasi esempio di codice che hai a portata di mano. Io ho usato:

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

Sperare che aiuti!

0

Il tuo codice è corretto. Penso che il problema sorga perché stai usando la creazione di ombre. Per questo motivo è necessario inserire l'immagine nella cartella di costruzione delle ombre (la cartella che contiene l'eseguibile) e non nella cartella del progetto (che contiene solo i file di codice).

Un altro suggerimento è quello di inserire un ritorno economico nel se caso, quindi il programma non si chiuderà quando non trova l'immagine.

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

Inoltre, assicurarsi di includere le seguenti intestazioni

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

ha funzionato per me:

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