2012-12-16 12 views
8

Spędziłem frustrująco długo, próbując otworzyć OpenCV, aby poprawnie połączyć się z Ubuntu 12.04 i pomyślałem, że podzielę się tym, czego się dowiedziałem, dla dobra innych.Kompilowanie i łączenie OpenCV w Ubuntu 12.04

OpenCV jest teraz dostępny w repozytoriach Ubuntu jako

sudo apt-get install libopencv-dev 

co jest dobre, ale wierzę (proszę mnie poprawić, jeśli się mylę), że ta wersja OpenCV ma inną konwencję nazewnictwa dla bibliotek . Główną różnicą jest to, że w C++ wiersz z włączaniem powinien odczytywać:

#include "opencv2/opencv.hpp" 

To sprawi, że twój kod będzie kompilował obiekt, ale nie będzie go łączyć. Inną różnicą jest to, że statyczne biblioteki również zostały zmienione z libcv * na libopencv *. Na przykład pliki binarne mogą być zlokalizowane w

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

Do tego musiałem wyraźnie powiedzieć linker o nowych nazw bibliotek poprzez zmianę mojego polecenia kompilator

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

Albo w CMake

target_link_libraries(main opencv_core opencv_highgui ...) 
naprawić

Mam nadzieję, że to pomoże. A jeśli ktoś wie więcej niż ja, chciałbym dowiedzieć się, co tu się dzieje.

-Mike

+0

wiesz jak to zrobić to samo na Eclipse na Ubuntu? Używam Eclipse 3.7 na Ubuntu 12.04 .. – wrahool

Odpowiedz

5

Osobiście używam 'pkg-config', aby uzyskać flagi kompilacji.

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

Przykład główny:

#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); 
} 
Powiązane problemy