Qu'est-ce qu'OpenCV
OpenCV signifie Open Source Computer Vision Library.
C'est un regroupement de fonctions C et quelques classes C++
qui ont ete implementees pour de nombreux algorithmes de Traitement d'image et de Vision par Ordinateur
Principaux points
OpenCV est compose de quelques centaines de fonctions C (>300). Ce n'est pas vraiment une
bibliotheque de calculs, meme si elle s'appuie sur certaines d'entre elles (voir en dessous).
OpenCV est gratuit a usage non commercial et commercial (voir les details de la licence).
OpenCV fournit une interface transparente aux primitives integrees par Intel® Integrated Performance Primitives (IPP) (seulement ippcv pour lmoment).
C'est-a-dire que la librairie charge automatiquement des bibilotheques d'IPP optimisee pour le processeur specifiques, si elles sont disponibles.
Pour plus d'informationn sur IPP, vous pouvez les retrouver sur http://www.intel.com/software/products/ipp/ippvm20/index.htm.
Il y a d'autres interfaces d'OpenCV pour d'autres langages/environnements (d'autres sont a venir):
- EiC - interpreteur ANSI C ecrit par Ed Breen. AFAIK, qui est maintenant abondonne.
Hawk et CvEnv sont des environnements interactifs (ecrit avec MFC et TCL).
- Ch - interpreteur ANSI C/C++ avec quelques possibilites de gestion par script, crees et geres par SoftIntegration® (http://www.segration.com)
- MATLAB® - chouette environnement pour les calculs numeriques et littel fournit apr Mathworks.
L'interfacage de MATLAB® pour certaines fonctions d'OpenCV peuvent etre trouvees sur opencv/interfaces/matlab/toolbox.
Tout d'abord la
Yahoo
group list vachement utile pour toutes les questions, les dernieres nouveautes,
tous les contacts des utilisateurs "declares".
- Telechargement sur SourceForge
- Installation pour Windows
- Installation pour Linux
- Petit test d'installation
- Documentation
- Exemples pour Windows
- Exemples pour Linux
Retour
Telechargement sur SourceForge
Avant tout, va falloir telecharger cette librairie. Le site de
SourceForge
propose les dernieres mises a jour (perso, j'utilise la
beta3.1, la derniere en ce moment).
Une fois telechargee, il faut installer cette librairie.
Retour
Installation pour Windows
La, normalement pas de problemes,
c'est une installation a la Windows, donc, 'ok', 'suivant', 'suivant', 'ok',
etc...










Dans le menu 'demarrer' de windows, on peut maintenant voir :
On peut voir egalement dans le repertoire d'installation creee par OpenCV (dans mon exemple
c:\Program Files\OpenCV):
Maintenant que OpenCV est installe, il faut le compiler pour pouvoir utiliser
les librairies (cv.lib, highgui.lib, cvaux.lib, etc..). Je vais utiliser Visual
C++ pour jouer avec. En ouvrant le fichier
OpenCV.dsp (qui se
trouve dans
_dsw ou dans
Demarrer -> Programmes -> OpenCV -> OpenCV Workspace), vous trouvez :
Ce sont tous les projets d'OpenCV, commencez par compiler
CV files
HighGUI files
cvaux files
Maintenant, pour être de compiler un code source avec Visual C++ en utilisant OpenCV, vous devez copier les fichiers dll dans votre répertoire de travail (ca depend de ce que vous voulez faire), normalement :
- cv.dll
- highgui.dll
- cvaux.dll
Ces fichiers sont utilisés pour l'execution.
- Pour compiler votre programme avec Visual, vous devez ajouter les répertoire des entêtes d'OpenCV
dans Tools->Options
Dans 'Include files'
c:\PROGRAM FILES\OPENCV\CV\INCLUDE for cv.h
c:\PROGRAM FILES\OPENCV\OTHERLIBS\HIGHGUI for highgui.h
Pour éviter ce genre d'erreurs :fatal error C1083: Cannot open include file: 'cv.h': No such file or directory
Dans 'Library files' :
c:\PROGRAM FILES\OPENCV\LIB for cv.lib, highgui.lib, cvaux.lib, etc..
Pour éviter ce genre d'erreurs :LINK : fatal error LNK1104: cannot open file "cv.lib"
-
Pour linker votre programme avec Visual C++, vous devez ajouter les librairies statiques comme ça :
Dans Project->Settings, Link
Dans 'Object/library modules'
- cv.lib, highgui.lib (cvaux.lib en option)
Pour éviter ce genre d'erreurs : File.obj : error LNK2001: unresolved external symbol _cvFlip... _cvRectangle... _cvCircle... _cvFindCornerSubPix... _cvCopy pour cv.lib
or File.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CvvImage::~CvvImage(void)" (??1CvvImage@@UAE@XZ) pour highgui.lib.
Maintenant, vous ètes prêt à jouer avec OpenCV.
Retour
Installation pour Linux
Installation pour Debian
Liste de paquetages :
| libcvaux-dev |
- development files for libcvaux |
| libcvaux0.9-5 |
- computer vision extension library |
| libcvcam-dev |
- development files for libcvcam |
| libcvcam0.9-5 |
- computer vision camera support library |
| libhighgui-dev |
- development files for libhighgui |
| libhighgui0.9-5 |
- computer vision GUI library |
| libopencv-dev |
- development files for libopencv |
| libopencv-doc |
- OpenCV documentation and examples |
| libopencv0.9-5 |
- computer vision library |
Lancer l'installation (thx zam):
apt-get install libcvaux-dev libcvaux0.9-5 libcvcam-dev libcvcam0.9-5 libhighgui-dev libhighgui0.9-5 libopencv-dev libopencv-doc libopencv0.9-5
|
Installation des TAR
Extraction de l'archive
gunzip opencv-0.9.5.tar.gz
|
tar -xvf opencv-0.9.5.tar
|
ou
tar -xzvf opencv-0.9.5.tar.gz
|
Pre-requis pour l'install :
- motif (LessTif or openMotif) avec les fichiers de developpement
- libpng, libjpeg, libtiff avec les fichiers de developpement
- libavcodec de ffmpeg ainsi que les headers
- fltk 1.1.x avec les fichiers de developpement
- TCL/TK 8.3.x et BWidgets avec les fichiers de developpement
Compilation de la bibliotheque :
./configure
|
make
|
make install # en tant que root
|
ldconfig # en tant que root
|
NB : Perso, j'ai eu des problemes avec le fichier
configure : le chemine de la librairie X11 n'etait pas la bonne..donc a verifier avant de chercher pendant deux semaines ....
Retour
Test
Test de compilation avec le petit exemple suivant :
/*
* foo.c
*/
#include <cv.h>
#include <highgui.h>
int main(int argc,char *argv[])
{
IplImage *image;
int x,y;
image = cvCreateImage(cvSize(300,300),8,1);
cvSetZero(image);
for(y=0 ; y < image->height ; y++)
{
for(x=0; x < image->width ; x++)
{
(image->imageData+image->widthStep*y)[x] = (x*y)%256
}
}
cvNamedWindow("Image",1)
cvShowImage("Image",image);
cvWaitKey(0);
return 0;
}
|
Ligne de compilation (sous debian) :
gcc opencv-config --cflags --libs highgui foo.c -o foo
|
|
Résultat de ce petit bout code :
|
Retour
Documentation
En fait, toutes les aides d'OpenCV ont ete sitees. Il y en a trois, en fait, plus deux et demi que trois :
Sur le net, en general les rares aides que l'on peut y trouver ressemblent etrangement a celles que l'on a deja en local.....
Retour
Exemples Windows
Sous Windows, il existe pas mal d'exemples :
|
|
Exemple de manipulation en stéréovision
utilisation des paramètres intrinsèques des caméras
|
|
|
Exemple de Corner Tracker très performant
utilisation de l'optique flou
|
|
|
Exemple de morphing
utilisation de droites épipolaire
|
|
|
Exemple de reconnaissance de visage
méthode empirique d'apprentissage
|
Retour
Exemples Linux
Le premier test que l'on peut faire sous Linux est de verifier le script
opencv-config :
Usage: opencv-config [OPTIONS]
|
Options:
|
[--prefix]
|
[--cflags]
|
[--cxxflags]
|
[--libs [opencv] [highgui] [cvcam] [cvaux]]
|
[--version]
|
|
opencv-config --prefix
opencv-config --cflags
opencv-config --cxxflags
opencv-config --libs opencv highgui cvcam cvaux
-lopencv -lopencv -lhighgui -lcvcam -lcvaux
|
opencv-config --version
|