niedziela, 8 lutego 2009

OpenCV cz. 0. Wprowadzenie

Tym wpisem rozpoczynam uproszczony kurs OpenCV. Przyznaję bez bicia, że prawdopodobnie będzie dość chaotyczny i nieregularny, ale przynajmniej będzie można przeglądać wpisy w dowolnej kolejności ;-) Używany przeze mnie zestaw to Linux Mint + Netbeans. Konfiguracja jest zapewne podobna na innych systemach i środowiskach więc zaczynamy.

Rzeczy poniżej opisane mogą wydawać się oczywiste dla wprawionego programisty, więc takowy może spokojnie przejść do przykładowego kodu.

Gdy posiadamy już Netbeansa (ściągnąć można stąd, należy zwrócić uwagę by posiadał moduł C/C++), tworzymy nowy projekt. Wybieramy nową aplikację C++
Dalej możemy zmienić takie rzeczy jak nazwa, czy ścieżka lub po prostu kliknąć "Finish". Następnie wybieramy opcje nowo utworzonego projektuNastępnie w części Build->C++ Compiler wskazujemy ścieżkę do plików nagłówkowych (u mnie będzie to /usr/include/opencv)
Kolejnym krokiem jest wskazanie katalogu dodatkowych bibliotek dynamicznych (Additional Library Directories w części Linker). Są to pliki .so w linuksie lub .dll w windowsie, u mnie ten katalog to /usr/lib. Dalej dołączenie bibliotek statycznych (pliki .a w linuksie i bodajże .lib w windowsie, u mnie w katalogu /usr/lib), przykładowy zestaw na załączonym poniżej zrzucie.

Kolejną czynnością jest dodanie plików nagłówkowych do projektu. Klikamy prawym przyciskiem na katalog Headers a następnie na Add Exsisting Items from Folder i wskazujemy odpowiednią ścieżkę (u mnie /usr/include/opencv). Można zamiast katalogu podać bezpośrenio pliki poleceniem Add Exsisting Items, wtedy podczas includowania w kodzie wymagana będzie jedynie ich nazwa



To by było na tyle z przygotowań, można zacząć pisać kod. Tworzymy nowy plik i wpisujemy poniższy kod:
#include "opencv/highgui.h"
int main(int argc, char** argv)
{

cvNamedWindow("okienko", 1);
while(true)
{
if(cvWaitKey(100) == 'q') break;
}
cvDestroyWindow("okienko");
return 0;
}

Program ten tworzy nowe okno, następnie czeka na wciśnięcie klawisza q, po czym kończy działanie. Dalsza część kursu wkrótce ;-)

4 komentarze:

Anonimowy pisze...

Super.

Anonimowy pisze...

Witam,
mogę spytać, dlaczego do funkcji przekazujesz parametr 100? W czym przekazanie parametru większego od zera jest lepsze na przykład od:

cvWaitKey()

Pozdrawiam!
Daniel :)

Łukasz pisze...

W zasadzie w niczym, to tylko taka prosta przykładowa pętla ;-)

Pozdrawiam,
Łukasz

Anonimowy pisze...

Hej. Super pomysł na kurs Open CV. Wielkie dzięki za udostępnienie.