O programa OpenCV não compilará (Quantal)

0

Eu estou tentando compilar um programa simples usando o OpenCV no Ubuntu Quantal. Eu instalei todos os pacotes OpenCV disponíveis. Meu código é o seguinte

#include <stdio.h>
#include <highgui.h>
#include <cv.h>

int main(int argc, char *argv[]) {
        IplImage* img=0; /* pointer to an image */
        printf("Hello\n");
        if(argv[1] != 0)
                img = cvLoadImage(argv[1], 0); // 1 for color
        else
                printf("Enter filename\n");
        if(img != 0) {
                cvNamedWindow("Display", CV_WINDOW_AUTOSIZE); // create a window
                cvShowImage("Display", img); // show image in window
                cvWaitKey(0); // wait until user hits a key
                cvDestroyWindow("Display");
        }
        else
                printf("File not found\n");
        return 0;
}

E meu comando de compilação é g++ -I/usr/include/opencv -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann main.cpp -o main

E recebo os seguintes erros

/tmp/ccUQ4Tm4.o: In function 'main':
main.cpp:(.text+0x45): undefined reference to 'cvLoadImage'
main.cpp:(.text+0x6b): undefined reference to 'cvNamedWindow'
main.cpp:(.text+0x7c): undefined reference to 'cvShowImage'
main.cpp:(.text+0x86): undefined reference to 'cvWaitKey'
main.cpp:(.text+0x90): undefined reference to 'cvDestroyWindow'
collect2: ld returned 1 exit status
make: *** [all] Error 1

O que eu entendo dos erros acima é que não há problema em encontrar a biblioteca, mas o compilador não pode encontrar as funções dentro dela. Você pode por favor me ajudar com isso?

    
por Paris 11.01.2013 / 10:23

1 resposta

3

inclua todas as suas bibliotecas no último.

por exemplo.

g++ -I/usr/include/opencv main.cpp -o main -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann  

Ele resolve os símbolos quando encontra bibliotecas na mesma sequência em que está escrito na linha de comando.

    
por Deepak 11.01.2013 / 13:35