2012-12-16 20 views
8

Ho appena passato un tempo frustrante per aprire openCV per collegare correttamente in Ubuntu 12.04 e ho pensato di condividere ciò che ho imparato a beneficio degli altri.Compilare e collegare OpenCV in Ubuntu 12.04

OpenCV è ora disponibile nei repository di Ubuntu come

sudo apt-get install libopencv-dev 

che è grande, ma credo che (per favore correggetemi se sbaglio) che questa versione di OpenCV ha una convenzione di denominazione diversa per le librerie . La differenza principale è che in C++ la riga include dovrebbe leggere

#include "opencv2/opencv.hpp" 

che otterrà il vostro codice di compilazione di opporsi, ma non il collegamento. L'altra differenza è che le librerie statiche sono state rinominate anche da libcv * a libopencv *. Ad esempio i binari possono essere collocati a

/usr/lib/libopencv_core.so 
/usr/lib/libopencv_highgui.so 
. 
. 
. 

Per risolvere questo avevo bisogno di dire esplicitamente il linker sui nuovi nomi di libreria cambiando il mio comando del compilatore per

g++ main.cpp -lopencv_core -lopencv_highgui ... 

O in CMake

target_link_libraries(main opencv_core opencv_highgui ...) 

Spero che questo aiuti. E se qualcuno ne sa più di me, mi piacerebbe scoprire cosa sta succedendo qui.

-Mike

+0

sai come fare lo stesso su Eclipse su Ubuntu? Sto usando Eclipse 3.7 su Ubuntu 12.04 .. – wrahool

risposta

5

Personalmente, sto usando 'pkg-config' per ottenere i flag di compilazione.

g++ `pkg-config --cflags opencv` main.c `pkg-config --libs opencv` -o main 

Esempio di principale:

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

int main(void) 
{ 
    printf("%s\r\n", CV_VERSION); 
    printf("%u.%u.%u\r\n", CV_MAJOR_VERSION, CV_MINOR_VERSION, CV_SUBMINOR_VERSION); 
} 
Problemi correlati