Instalacja OpenCV

Zawartość



Opis



Ten poradnik wyjaśnia jak zintegrować bibliotekę OpenCV ze środowiskiem Dev-C++.
Na zakończenie poradnika będziesz w stanie korzystać z biblioteki OpenCV i pisać programy C++, które mogą używać kamerki internetowe lub inne źródła sygnału wideo i potrafiące wykrywać osoby, ruch lub obrys obiektów...

OpenCV (Open Source Computer Vision Library) jest biblioteką C++ utworzoną do przetwarzania obrazów przez firmę Intel.

Biblioteka OpenCV zawiera różne algorytmy, między innymi:
  • rozpoznawanie twarzy
  • analiza konturów
  • transformacja Hough'a
  • wykrywanie ruchu
  • śedzenie obiektów
  • ... i wiele innych ...

Λ Do góry



Instalacja OpenCV



W pierwszej kolejności należy pobrać OpenCV z http://sourceforge.net/projects/opencvlibrary/.
Wersja użyta w tym poradniku nosi nazwę "OpenCV_xyz.exe" i zamieszczona jest w pakiecie "opencv-win" (xyz stands for the version).
Bezpośrednie łącze: download of version 1.0rc1 ( 16 MB).

Teraz powinieneś uruchomić pobrany plik instalatora. Jeśli zachowasz domyślne ustawienia (zalecane), to biblioteka OpenCV zostanie zainstalowana w katalogu C:\Program Files\OpenCV.
Po zakończeniu instalacji należy przeładować system w celu zaktualizowania ustawień ścieżek dostępu (C:\Program Files\OpenCV\bin).

W katalogu C:\Program Files\OpenCV\samples\c zamieszczono kilka przykładowych programów.
Część z nich do poprawnej pracy wymaga podłączenia kamerki internetowej (lub innego źródła wideo).



Λ Do góry



Konfiguracja Dev-C++



W środowisku Dev-C++ otwórz menu "Narzędzia->Opcje kompilatora".
W pierwszej zakładce ("Kompilator") zaznacz opcję "Dodaj te polecenia do wiersza poleceń konsolidatora" i wpisz następujący tekst:
-lhighgui -lcv -lcxcore -lcvaux -lcvcam
Screenshot

W zakładce "Binaria" dopisz C:\Program Files\OpenCV\bin :

 

W zakładce "Biblioteki" dodaj wpis C:\Program Files\OpenCV\lib :
Screenshot

Wstaw teraz do zakładek "Pliki nagłówkowe C" oraz "Pliki nagłówkowe C++" następujące ścieżki dostępu:
C:\Program Files\OpenCV\cxcore\include
C:\Program Files\OpenCV\cv\include
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\cvaux\include
C:\Program Files\OpenCV\otherlibs\cvcam\include

Screenshot





Λ Do góry




To wszystko 



Okazało się, że nie było to zbyt trudne. Teraz możesz otworzyć przykładowy plik, np. C:\Program Files\OpenCV\samples\c\squares.c a następnie skompilować i uruchomić go za pomocą Dev-C++ (F9).
Oczywiście powinieneś poeksperymentować zmieniając przykładowe programy korzystające z OpenCV...

Dokumentację do OpenCV znajdziesz tutaj: OpenCV documentation



Λ Do góry



Linki i pliki



OpenCV (Intel) (nieaktualny)
OpenCV (Wikipedia)
OpenCV project (Sourceforge)
Bloodshed Dev-C++
Dev-C++ Resource Site

OpenCV Version 1.0rc1 (16MB)



Λ Do góry



Możliwości biblioteki OpenCV 1.1pre1

1 podstawowe struktury i operacje Array, Matrix, Dynamic Data, Sequences, Sets, Graphs, Trees, etc.
2 Przetwarzanie i analiza obrazu : Drawing, Gradient, Edge, Corner, Sampling, Interpolation, Geometrical Transfrom, Morphological Operation, Filter, Color Conversion, Pyramids, Connected Components, Contour Moment, Image Transform, Histogram, Utility.
3 Structural Analysis :  Contour, Geometry, planar Subdivision.
4 Analiza ruchu i śledzenie obiektów : Accumulation of Background Statistics, Motion Template, Object Tracking, Optical Flow, Estimators.
5 Rozpoznawanie obiektów : Eigen Object (PCA), Embedded HMM.
6 Camera Calibration and 3D Reconstruction : Camera Calibration, Pose Estimation, View Morphing, Epipolar Geometry.
7 Experimental Functionality : Object Detection, Stereo Correspondence, 3D Tracking.
8 GUI and Video Acquisition : Window, Image Handling, Video I/O, Support System.



Po więcej szczegółów zajrzyj do "<opencv_root>\OpenCV\docs".

Λ Do góry



Budowa przykładowej struktury:


typedef struct _IplImage {
int nSize;                                  /* sizeof(IplImage) */
int ID;                                       /* version (=0)*/
int nChannels;                          /* Most of OpenCV functions support 1,2,3 or 4 channels */
int alphaChannel;                      /* ignored by OpenCV */
int depth;                                  /* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S, 

                                                    IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported */
char colorModel[4];                   /* ignored by OpenCV */
char channelSeq[4];                  /* ditto */
int dataOrder;                            /* 0 - interleaved color channels, 1 - separate color channels. 

                                                   cvCreateImage can only create interleaved images */
int origin;                                  /* 0 - top-left origin, 1 - bottom-left origin (Windows bitmaps style) */
int align;                                   /* Alignment of image rows (4 or 8). OpenCV ignores it and 

                                                  uses widthStep instead */
int width;                                  /* image width in pixels */
int height;                                /* image height in pixels */
struct _IplROI *roi;                    /* image ROI. if NULL, the whole image is selected */
struct _IplImage *maskROI;      /* must be NULL */
void *imageId;                         /* ditto */
struct _IplTileInfo *tileInfo;         /* ditto */
int imageSize;                         /* image data size in bytes (==image->height*image->widthStep 

                                                 in case of interleaved data)*/
char *imageData;                     /* pointer to aligned image data */
int widthStep;                          /* size of aligned image row in bytes */
int BorderMode[4];                   /* ignored by OpenCV */
int BorderConst[4];                  /* ditto */
char *imageDataOrigin;            /* pointer to very origin of image data (not necessarily aligned) -
                                                 needed for correct deallocation */
}IplImage;


Λ Do góry



 

 

Powyższe jest tłumaczeniem poradnika zamieszczonego na www.cypax.net