Par X. HNAULT www.mon-club-elec.fr Sept 2011 Tous droits rservs Licence GPLv3
Remarques gnrales :
> La plupart des fonctions javacv implmentant les fonctions openCV sont dans le package javacv.cpp de la librairie. La librairie javacv comporte aussi le package javacv. > Toutes les sous-classes d'une classe peuvent tre utilises dans une fonction recevant cette classe. Par exemple, une fonction acceptant un CvArr peut recevoir indiffremment l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage. > On appelle ici meta-classe une classe qui comporte plusieurs sous-classes > Le package javacv.cpp est structur de la mme faon que la librairie OpenCV elle-mme et comporte notamment : >> la meta-classe opencv_core : regroupant toutes les classes objets fondamentales de la librairie Opencv ainsi que les fonctions de base de manipulation des objets >> la meta-classe opencv_imgproc : regroupant des classes pour le traitement d'image > La plupart des classes (en fait toutes apparemment) des modules opencv_core, opencv_imgprog, etc... sont des sous-classes de javacpp.Pointer ( attention, pas javacv.cpp !), javacpp tant la librairie d'interface C/C++ => Java. Ainsi, toutes les classes sont potentiellement utilisables avec les fonctions (ou mthodes) recevant un objet Pointer. > A noter aussi un (mta-)classe opencv_contrib qui comporte des classes priori intressantes tester : cf dtecteur peau (skin) ou encore la mta-classe feature 2D qui comporte des fonctions intressante (cf SimpleBlobDetector) ou legacy (dtection de blob...)
traitement d'image avanc qui ne sont pas disponible dans Processing. com.googlecode.javacpp.Pointer
glecode.javacv.cpp.opencv_core
s_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.html
| ----- com.googlecode.javacv.cpp.opencv_core
e un objet IplImage
| ----- com.googlecode.javacv.cpp.opencv_core
| ----- com.googlecode.javacv.cpp.opencv_core
ecode.javacv.cpp.opencv_imgproc
docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_imgproc.html
age
e formes
et
lecode.javacv.cpp.opencv_highgui
docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_highgui.html
code.javacv.cpp.opencv_features2d
ocs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_features2d.html
glecode.javacv.cpp.opencv_video
_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_video.html
lecode.javacv.cpp.opencv_calib3d
docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_calib3d.html
ecode.javacv.cpp.opencv_objdetect
docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_objdetect.html
oglecode.javacv.cpp.opencv_ml
es_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_ml.html
glecode.javacv.cpp.opencv_flann
_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_flann.html
glecode.javacv.cpp.opencv_legacy
Cre une IplImage en crant l'entte (header) et la matrice associe. (voir classe opencv_core.IplImage )
Javadoc Javacv :
http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#createimage
Paramtres :
> size : taille de l'image de type CvSize (objet de 2 valeurs largeur, hauteur) cr simplement avec fonction opencv_core.cvSize(hauteur,largeur) > depth : nombre de bits codant l'image 8, 16, 32 bits, signs ou non. Plusieurs champs prdfinis possibles CV_8U, CV_16S, etc... ou IPL_DEPTH_8U voir : http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#IplImage NB : faire prcder le nom du champ par opencv_core. > channels : le nombre de canaux utiliss pour l'image. 3 si RGB simple, 1 si niveaux de gris, 4 si ARGB (RGB + transparence) utiliser 3
Exemple code Processing : // cre une image IplImage 8bits, 3 canaux (rgb) opencv_core.CvSize mySize=opencv_core.cvSize(widthIn,heightIn); // objet taille de l'image Buffer = opencv_core.cvCreateImage(mySize, opencv_core.IPL_DEPTH_8U, 3); // 3 canaux - RGB --
static void
http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#copy
Paramtres :
> src : Image source - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage > dst : image destination - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage
attention : src et dst doivent avoir la mme taille, le mme nombre de canaux (nChannels) et tre codes sur le mme nombre de bits (depth)
Exemple code Processing : opencv_core.cvCopy(iplImgSrc, iplImgDest); //--- copie l'objet IplImage dans un autre objet IplImage --opencv_core.cvConvertScaleAbs() Desc :
convertit une image d'un nombre bit dans une image ayant un autre nombre de bits
Javacv :
static void cvConvertScaleAbs(opencv_core.CvArr src, opencv_core.CvArr dst, double scale, double shift)
Doc openCV :
http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#convertscale
Paramtres :
> src : Image source - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage > dst : image destination - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage > scale : facteur d'chelle > shift : valeur ajouter chaque lment du tableau
Exemple code Processing : opencv_core.cvConvertScaleAbs(Trans,iplImgIn,1,0);
opencv_core.cvZero() ? Desc :
met 0 le tableau ?
Javadoc Javacv :
Paramtres :
Renvoi :
Fonctions de dessin
opencv_core.cvDrawContours() Desc :
Trace dans une image le contour obtenu avec cvFindContour() (voir img_proc)
Javadoc Javacv :
static void cvDrawContours(opencv_core.CvArr img, opencv_core.CvSeq contour, opencv_core.CvScalar external_color, opencv_core.CvScalar hole_color, int max_level, int thickness, int line_type)
Doc openCV :
> img : image destination > contour : Objet Seq correspondant une squence de points > color : scalaire couleur extrieur cr inline avec opencv_core.cvScalar(r,g,b) > hole_color : scalaire couleur intrieure cr inline avec opencv_core.cvScalar(r,g,b) > max_level : >> O : seulement le contour est dessin >> 1 : the contour and all contours following it on the same level are drawn >> 2 : all contours following and all contours one level below the contours are drawn >> -1 : he function does not draw the contours following after contour but draws the child contours of contour > thickness : paisseur de la ligne. Si valeur ngative utilise, contour intrieur dessin. Par ex : CV_FILLED > line_type : fixe la technique de trac de la ligne parmi : >> 8 : the 8-connected Bresenham algorithm >> 4 : the 4-connected Bresenham algorithm >> CV_AA antialiased line.
Renvoi :
rien.
Exemple code Processing : opencv_core.cvDrawContours(iplImgTraceContours, contour, opencv_core.CvScalar.BLUE, opencv_core.CvScalar.BLUE, -1, 1, opencv_core.CV_AA) ;
Desc : Initialise la lecture des lments d'un objet CvSeq Javadoc Javacv : static void cvStartReadSeq(opencv_core.CvSeq seq, opencv_core.CvSeqReader reader, int reverse) Doc openCV : > http://opencv.willowgarage.com/documentation/c/core_dynamic_structures.html#startreadseq C > http://opencv.itseez.com/modules/core/doc/dynamic_structures.html#startreadseq 2.3.1 Paramtres : > seq : Objet CvSeq > reader : Objet reader cet objet est initialis par la fonction et peut donc simplement tre dclar avant. > reverse : sens de lecture : 0, se positionne au dbut, et 1 se positionne la fin... Renvoi : Autres fonctions associes : > opencv_core : static void CV_NEXT_SEQ_ELEM(int elem_size, opencv_core.CvSeqReader reader) : passe l'lment suivant de l'objet CvSeq > opencv_core : static void cvChangeSeqBlock(opencv_core.CvSeqReader reader, int direction) > opencv_core : static int cvGetSeqReaderPos(opencv_core.CvSeqReader reader) > opencv_core : static void cvSetSeqReaderPos(opencv_core.CvSeqReader reader, int index, int is_relative) Exemple code C :
CvMemStorage* storage = cvCreateMemStorage(0); CvSeq* seq = cvCreateSeq( CV_32SC1, sizeof(CvSeq), sizeof(int), storage ); CvSeqWriter writer; CvSeqReader reader; int i; cvStartAppendToSeq( seq, &writer ); for( i = 0; i < 10; i++ ) { int val = rand() CV_WRITE_SEQ_ELEM( val, writer ); printf(" } cvEndWriteSeq( &writer ); cvStartReadSeq( seq, &reader, 0 ); for( i = 0; i < seq->total; i++ )
{ int val; #if 1 CV_READ_SEQ_ELEM( val, reader ); printf(" #else /* alternative way, that is prefferable if sequence elements are large, or their size/type is unknown at compile time */ printf(" CV_NEXT_SEQ_ELEM( seq->elem_size, reader ); #endif } ... cvReleaseStorage( &storage );
opencv_core.ModeleFonction() Desc :
Javadoc Javacv :
Doc openCV :
Paramtres :
Renvoi :
Desc : mtatype utilis en tant que paramtre de fonction - classe dont dpend notamment IplImage Javadoc : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvArr.html En pratique, on utilise les sous-classes de la classe CvArr . Un CvArr a les sous-classes suivantes :
opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage Lorsqu'une fonction reoit un CvArr, cela peut donc correspondre l'une ou l'autre de ces classes. A l'inverse, ces classes hritent des fonctions de CvArr (aucune en fait..)
un objet IplImage reprsente une image = matrices (hauteur x largeur pixels) x 1 4 canaux/couleurs cods sur n bits signs ou non Plus exactement, c'est une entte associe une matrice image.
Javadoc :
http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.IplImage.html
Doc OpenCV :
http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#IplImage
javacv : Fonctions propres essentielles :
> create() : cration d'un objet IplImage > cvSize() : taille de l'image sous forme d'un CvSize > depth() : nombre de bits de codage > nChannels() : nombre de canaux > width() : largeur de l'image > height() : hauteur de l'image > getBufferedImage() : copie l'image dans un objet BufferedImage (objet Java) > getByteBuffer() : copie les donnes de l'image dans un ByteBuffer (objet Java)
javacv : Fonctions importantes associes :
opencv_core.IplImage.create() Desc :
Cre un objet IplImage (conteneur d'image) en fixant les paramtres de taille, nombre de canaux et le codage en nombre de bits.
Javadoc Javacv :
static opencv_core.IplImage create(int width, int height, int depth, int channels) static opencv_core.IplImage create(int width, int height, int depth, int channels, int origin)
static opencv_core.IplImage create(opencv_core.CvSize size, int depth, int channels) static opencv_core.IplImage create(opencv_core.CvSize size, int depth, int channels, int origin)
Doc openCV :
http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#createimage
Paramtres :
> width : largeur en pixels > height : hauteur en pixels > ou size (alternative) : la taille et la largeur peuvent tre fournies via un objet CvSize (structure 2 valeurs) - in line avec opencv_core.cvSize(val1,val2) > depth : nombre de bits utiliss pour coder l'image. Utiliser IPL_DEPTH_8U par dfaut (8 bits non signs : 0-255). Les champs suivants sont utilisables :
Voir ici pour les dtails : http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#IplImage > channels : le nombre de canaux utiliss pour l'image (correspond en fait au nombre de matrices (widthxheight) utilises pour l'image) >> 1 pour une image en niveau de gris >> 3 pour une image RGB >> 4 pour une image ARGB (RGB + canal transparence) > origin : fixe le point 0,0 de l'image : >> 0 : origine dans le coin suprieur gauche >> 1 : origine dans le coin infrieur gauche
Renvoi :
Javadoc Javacv :
Doc openCV :
Paramtres :
Renvoi :
Desc : Reprsente un tableau nD de donnes Javadoc javacv : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvMat.html Doc OpenCV : http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#cvmat distinguer de : http://opencv.itseez.com/modules/core/doc/basic_structures.html#Mat (pas dispo avec javacv)
javacv : Fonctions propres essentielles :
Classe opencv_core.CvMemStorage
Prsentation
Desc : Reprsente une objet de stockage de donnes croissance dynamique de type CvSeq et autres. Est constitu de CvMemBlock. Des blocs sont ajouts lorsque cela est ncessaire. Javadoc javacv : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvMemStorage.ht ml Doc OpenCV : http://opencv.itseez.com/modules/core/doc/dynamic_structures.html#cvmemstorage
et aussi :
javacv : Fonctions propres essentielles :
> static opencv_core.CvMemStorage cvCreateMemStorage(int block_size) : cration d'un CvMemStorage Initialiser 0 NB : s'initialise sous la forme : opencv_core.CvMemStorage storage= opencv_core.cvCreateMemStorage(0); // initialise objet conteneur CvMemStorage
Desc : Reprsente une squence (tableau 1D) de croissance dynamique. Est constitu de CvBlock. Ne comporte aucun trou. Est stock dans CvMemStorage. Plusieurs sous classes : opencv_core.CvChain, opencv_core.CvContour, opencv_core.CvSet, opencv_legacy.CvContourTree Javadoc javacv : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvSeq.html Doc OpenCV : http://opencv.itseez.com/modules/core/doc/dynamic_structures.html#cvseq et aussi : Un CvSeq est une squence de squences 1D (si je comprends bien...) et est caractris par : > flags : drapeau de squence qui fixe le type des lments de la squence. Cf http://www710.univ-lyon1.fr/~bouakaz/OpenCV0.9.5/docs/ref/OpenCVRef_BasicFuncs.htm#ch1_seqs : The field flags contain the particular dynamic type signature (CV_SEQ_MAGIC_VAL for dense sequences and CV_SET_MAGIC_VAL for sparse sequences) in the highest 16 bits and miscellaneous information about the sequence. The lowest CV_SEQ_ELTYPE_BITS bits contain the ID of the element type. Most of sequence processing functions do not use element type but element size stored in elem_size. If sequence contains the numeric data of one of CvMat type then the element type matches to the corresponding CvMat element type, e.g. CV_32SC2 may be used for sequence of 2D points, CV_32FC1 for sequences of floating-point values etc. CV_SEQ_ELTYPE(seq_header_ptr) macro retrieves the type of sequence elements. Processing function that work with numerical sequences check that elem_size is equal to the calculated from the type element size. Besides CvMat compatible types, there are few extra element types defined in cvtypes.h header: Standard Types of Sequence Elements
#define CV_SEQ_ELTYPE_POINT #define CV_SEQ_ELTYPE_CODE #define CV_SEQ_ELTYPE_GENERIC elements */ #define CV_SEQ_ELTYPE_PTR #define CV_SEQ_ELTYPE_PPOINT element of other sequence */ #define CV_SEQ_ELTYPE_INDEX some other sequence */ #define CV_SEQ_ELTYPE_GRAPH_EDGE &next_d, &vtx_o, &vtx_d */ #define CV_SEQ_ELTYPE_GRAPH_VERTEX &(x,y) */ #define CV_SEQ_ELTYPE_TRIAN_ATR binary tree */ #define CV_SEQ_ELTYPE_CONNECTED_COMP component */ #define CV_SEQ_ELTYPE_POINT3D
CV_32SC2 /* (x,y) */ CV_8UC1 /* freeman code: 0..7 */ 0 /* unspecified type of sequence CV_USRTYPE1 /* =6 */ CV_SEQ_ELTYPE_PTR /* &elem: pointer to CV_32SC1 /* #elem: index of element of /* &next_o, /* first_edge, /* vertex of the /* connected */
Voir aussi : http://www.mon-club-elec.fr/mes_docs/my_javacv_javadoc/constant-values.html > header_size : The field header_size contains the actual size of the sequence header and should be greater or equal to sizeof(CvSeq). Initialiser sizeof(CvSeq) > total : le nombre total d'lment de squences > h_prev, h_next, v_prev, v_ : pointers to another sequences in a sequence tree. Sequence trees are used to store hierarchical contour structures, retrieved by FindContours() The fields h_prev, h_next, v_prev, v_next can be used to create hierarchical structures from separate sequences. The fields h_prev and h_next point to the previous and the next sequences on the same hierarchical level while the fields v_prev and v_next point to the previous and the next sequence in the vertical direction, that is, parent and its first child. But these are just names and the pointers can be used in a different way.
javacv : Fonctions propres essentielles :
> static opencv_core.CvSeq cvCreateSeq(int seq_flags, int header_size, int elem_size, opencv_core.CvMemStorage storage) Pour des dtails, voir : http://www710.univ-lyon1.fr/~bouakaz/OpenCV0.9.5/docs/ref/OpenCVRef_BasicFuncs.htm#ch1_seqs NB : Peut s'initialiser sous la forme : opencv_core.CvSeq contour = new opencv_core.CvSeq(null); // initialise objet CvSeq vide Dans le cas d'une recherche de contour, initialiser un objet CvSeq null : la fonction cvFindContours() /crera/remplira le CvSeq ;. NB2 : pour rcuprer le contenu d'un CvSeq, on peut utiliser cvGetSeqElem ou cvCvtSeqToArray > opencv_core.cvClearSeq(contour); // efface la squence courante (et pas toutes les squences) > cvCvtSeqToArray(opencv_core.CvSeq seq, com.googlecode.javacpp.Pointer elements, opencv_core.CvSlice slice) ?
Classe opencv_core.CvContour
Prsentation
Desc : Est une sous classe de CvSeq qui reprsente un contour. Javadoc javacv : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvContour.html Doc OpenCV :
javacv : Fonctions propres essentielles :
Classe opencv_core.CvSeqReader
Prsentation
Desc : Objet qui permet de lire l'objet SeqBlock courant d'un objet CvSeq Javadoc javacv : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvSeqReader.html Doc OpenCV : Pas de doc propre : c'est la doc de CvStartReadSeq : http://opencv.itseez.com/modules/core/doc/dynamic_structures.html#startreadseq
javacv : Fonctions propres essentielles :
Classe opencv_core.CvSize
Prsentation
Desc : un objet CvSize est un ensemble de 2 valeurs entires reprsentant la taille d'un rectangle : la hauteur et la largeur. Javadoc :
mySize.height() : renvoie la valeur height mySize.height(int height) : fixe la valeur height mySize.width() : renvoie la valeur width mySize.width(int width) : fixe la valeur width
javacv : Fonctions importantes associes :
> static opencv_core.CvSize cvSize(int width, int height) : renvoie un objet CvSize correspondant aux 2 valeurs width et height NB : pour crer simplement un objet CvSize in line , on fera : opencore_cv.cvSize(largeur, hauteur)
Classe opencv_core.CvPoint
Prsentation
Desc : Coordonnes entire d'un point en 2 dimensions, habituellement 0 based (cd 1er point en 0,0) Javadoc : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvPoint.html Doc OpenCV : http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#cvpoint
javacv : Fonctions propres essentielles :
> void
> .x() : renvoie x > .x(val) : fixe x > .y() : renvoie y > .y(val) : fixe y
javacv : Fonctions importantes associes :
opencv_core.cvPoint(int x, int y)
Classe opencv_core.CvScalar
Prsentation
Desc : Structure contenant 1 4 valeurs utilis pour dfinir les 3 canaux RGB d'un pixel. Javadoc javacv : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/com/googlecode/javacv/cpp/opencv_core.CvScalar.html Doc OpenCV : http://opencv.itseez.com/modules/core/doc/old_basic_structures.html#cvscalar
javacv : Fonctions propres essentielles :
> myScalar.blue() : renvoie la valeur bleu > myScalar.red() : renvoie la valeur rouge > myScalar.green() : renvoie la valeur green > myScalar.blue(val) :fixe la valeur bleu > myScalar.red(val) : fixe la valeur rouge > myScalar.green(val) : fixe la valeur green
> static opencv_core.CvScalar cvScalar(double val0, double val1, double val2, double val3)
Classe opencv_core.modele
Prsentation
Desc : ralise un changement du mode du systme de couleur. Javadoc Javacv : static void cvCvtColor(opencv_core.CvArr src, opencv_core.CvArr dst, int code) Doc openCV : http://opencv.itseez.com/modules/imgproc/doc/miscellaneous_transformations.html#cvtcolor Paramtres : > src et dest : images source et destination Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage - attention : l'image destination doit tre 1 canal si passage en niveau gris > code : dfinit la transformation . CV_RGB2GRAY pour niveau de gris. Exemple code Processing :
opencv_imgproc.cvCvtColor(Buffer, Buffer, opencv_imgproc.CV_RGB2GRAY) ; // bascule en niveaux de gris
Truc : pour transformer une image RGB en niveaux de gris, il suffit de raliser un cvCvtColor RGB2GRAY puis un GRAY2RGB en utilisant une image buffer 1 canal : on obtient ainsi une image en niveaux de gris 3 canaux.
opencv_imgproc.cvCvtColor(iplImgIn, BufferGray, opencv_imgproc.CV_RGB2GRAY); // bascule en niveaux de gris opencv_imgproc.cvCvtColor(BufferGray, iplImgIn, opencv_imgproc.CV_GRAY2RGB); // rebascule en RGB
opencv_imgproc.cvSmooth
Desc : applique un flou une image Javadoc Javacv : static void Doc openCV : http://opencv.itseez.com/modules/imgproc/doc/filtering.html#smooth Paramtres : src : image source - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage dst : image destination - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage smoothtype : fixe le type d'effet appliquer parmi > CV_BLUR_NO_SCALE > CV_BLUR > CV_GAUSSIAN ( utiliser) cvSmooth(opencv_core.CvArr src, opencv_core.CvArr dst, int smoothtype, int size1)
>CV_MEDIAN > CV_BILATERAL size1 : la taille du noyau de circonvolution utilis 3,5,7.. - 3 pour noyau 3x3 Exemple code Processing :
opencv_imgproc.cvSmooth(iplImgIn, iplImgIn, opencv_imgproc.CV_GAUSSIAN, 3); // applique un effet Flou gaussien - kernel 3x3
Description
Desc : Fonction appliquant un flou sur une image Javadoc Javacv : static void blur(opencv_core.CvArr src, opencv_core.CvArr dst, opencv_core.CvSize ksize, opencv_core.CvPoint anchor, int borderType) Doc openCV : http://opencv.itseez.com/modules/imgproc/doc/filtering.html#void%20blur%28InputArray%20src, %20OutputArray%20dst,%20Size%20ksize,%20Point%20anchor,%20int%20borderType%29 Paramtres : src : image source - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage dst : image destination - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage ksize : la taille du noyau de circonvolution (kernel) (CvSize est un ensemble de 2 valeurs) utiliser 3x3 cration inline avec opencv_core.cvSize(3,3) anchor : coordonnes du point de rfrence (le point central) dans le noyau kernel (-1,-1) par dfaut pour le centre (cf : The position of the anchor relative to its kernel. The location Point(-1, -1) indicates the center by default.) borderType : Type d'extrapolation utiliser pour les points en dehors de l'image utiliser BORDER_DEFAULT (voit aussi : http://www.mon-clubelec.fr/mes_docs/my_javacv_javadoc/constantvalues.html#com.googlecode.javacv.cpp.opencv_imgproc.BORDER_DEFAULT) Exemple code Processing :
opencv_imgproc.blur( iplImgSrcGray, iplImgSrcGray, opencv_core.cvSize(3,3), opencv_core.cvPoint(-1,-1), opencv_imgproc.BORDER_DEFAULT); // application d'un flou avec noyau 3x3
opencv_imgproc.cvSobel
Prsentation
Javadoc javacv : static void cvSobel(opencv_core.CvArr src, opencv_core.CvArr dst, int xorder, int yorder, int aperture_size) Doc OpenCV : http://opencv.itseez.com/modules/imgproc/doc/filtering.html#sobel Paramtres : > src et dst : Image source et destination - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage attention : l'image destination doit tre en 16bits signs (CV_16S) pour rebasculer en mode 8bits, utiliser opencv_core.cvConvertScaleAbs() > xorder et yorder : application du filtre vertical/horizontal 0 pas appliqu, 1 appliqu > aperture size : taille du noyau de circonvolution CV_CHARR pour application filtre SCHARR plus discriminant... Exemple code Processing :
opencv_imgproc.cvSobel(iplImgIn, iplImgOut, 1,1,3); // applique une dtection contour par filtre Sobel
opencv_imgproc.cvCanny()
Desc : Fonction avance de dtection de contours Javadoc Javacv : static void cvCanny(opencv_core.CvArr image, opencv_core.CvArr edges, double threshold1, double threshold2, int aperture_size) Doc openCV : http://opencv.itseez.com/modules/imgproc/doc/feature_detection.html#canny Paramtres : > image : image dans laquelle on doit dtecter des contours - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage Attention : doit tre une image 1 canal en 8 bits > edges : image destination du rsultat de la dtection - Peut tre l'une des sous classes CvArr suivante : opencv_core.CvMat, opencv_core.CvMatND, opencv_core.CvSeq, opencv_core.CvSparseMat, opencv_core.IplImage Attention : doit tre une image 1 canal en 8 bits et tre de la mme taille que l'image source. > thresold1 : valeur seuillage utilise par l'algorithme utiliser 100 > thresold2 : valeur seuillage utilise par l'algorithme utiliser 200 ou thresold1 x 2 > aperture_size : taille noyau utilis par le filtre sobel de l'algorithme utiliser 3 Exemple code Processing :
ou
opencv_imgproc.cvCanny(iplImgSrcGray, iplImgSrcContours, 100, 100*2, 3);
Fonction de dtection des contours dans une image 8 bits. La fonction cre un objet CvContour stock dans un CvMemStorage...
Javadoc Javacv :
static int cvFindContours(opencv_core.CvArr image, opencv_core.CvMemStorage storage, opencv_core.CvSeq first_contour, int header_size, int mode, int method)
Doc openCV :
> http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#fin dcontours > et http://opencv.willowgarage.com/documentation/c/imgproc_structural_analysis_and_shape_descript ors.html (version C) > http://opencv.willowgarage.com/documentation/structural_analysis_and_shape_descriptors.html#fi ndcontours (++) > et http://opencv.willowgarage.com/documentation/c/core_drawing_functions.html#drawcontours (exemple C)
Paramtres :
ATTENTION : L'image source est modifie par la fonction... > Image : l'image analyser. L'image doit tre 8 bits 1 canal. Les valeurs diffrentes de 0 sont traites 1 et 0 sinon. Considre comme une image binaire qui peut tre obtenur par plusieurs fonctions > storage : Objet CvMemStorage utilis pour le stockage dynamique > first_contour : Objet CvSeq correspondant au premier contour > header_size : nombre de contour retrouv. Donn par sizeOf(cvContour) ou sizeOf (CvChain) si mthode CvContour reprsenterait ainsi une squence de points > mode : contour pris en compte parmi : >> CV_RETR_EXTERNAL - retrives only the extreme outer contours >> CV_RETR_LIST - retrieves all of the contours and puts them in the list >> CV_RETR_CCOMP - retrieves all of the contours and organizes them into a two-level hierarchy: on the top level are the external boundaries of the components, on the second level are the boundaries of the holes
>> CV_RETR_TREE - retrieves all of the contours and reconstructs the full hierarchy of nested contours > method : mthode de dtection parmi : >> CV_CHAIN_CODE - outputs contours in the Freeman chain code. All other methods output polygons (sequences of vertices) >> CV_CHAIN_APPROX_NONE - translates all of the points from the chain code into points >> CV_CHAIN_APPROX_SIMPLE - compresses horizontal, vertical, and diagonal segments and leaves only their end points >> CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS - applies one of the flavors of the Teh-Chin chain approximation algorithm. >> CV_LINK_RUNS - uses a completely different contour retrieval algorithm by linking horizontal segments of 1s. Only the CV_RETR_LIST retrieval mode can be used with this method.
Valeur renvoye :
Cette fonction est directement et logiquement couple avec la fonction cvDrawContour() (module core)
opencv_imgproc.cvApproxPoly() Desc :
static opencv_core.CvSeq cvApproxPoly(com.googlecode.javacpp.Pointer src_seq, int header_size, opencv_core.CvMemStorage storage, int method, double parameter, int parameter2)
Doc openCV :
http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#app roxpolydp
Paramtres :
Renvoie :
> Un objet CvSeq correspondant aux squences de point des contours dtects
Exemple code Processing :
opencv_imgproc.cvContourArea() Desc :
http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#con tourarea
Paramtres :
> contour : Objet CvArr correspondant au contour. Typiquement un objet CvSeq renvoy par FindContours > slice : Objet CvSlice qui dfinit le mode de calcul. Utiliser par dfaut opencv_core.CV_WHOLE_SEQ > oriented : rsultat sign ou non - mettre 0 pour valeur absolue de l'aire, 1 pour rsultat sign (+ ou -)
Exemple code Processing : double area=0; area=opencv_imgproc.cvContourArea(contour, opencv_core.CV_WHOLE_SEQ, 0 ); println("Aire contour "+ nbContours+ " = " + area); // affiche valeur aire contour
opencv_imgproc.cvArcLength() Desc :
http://opencv.willowgarage.com/documentation/c/imgproc_structural_analysis_and_shape_descript ors.html#arclength
Paramtres :
> curve : ensemble de point reprsentant la courbe. Peut tre une squence obtenue par FindContours > slice : utiliser CV_WHOLE_SEQ > is_closed : 0 si la courbe n'est pas ferme, 1 si courbe est ferme, -1 si courbe est une squence.
Exemple code Processing : //--- longueur du contour courant --double longueur=0; longueur=opencv_imgproc.cvArcLength(contour, opencv_core.CV_WHOLE_SEQ, -1 ); println("Longueur contour "+ nbContours+ " = " + longueur); // affiche valeur aire contour opencv_imgproc.ModeleFonction() Desc :
Javadoc Javacv :
Doc openCV :
Paramtres :
Renvoi :
opencv_imgproc.cvResize() Desc :
> src > dst > interpolation : >> CV_INTER_NN nearest-neigbor interpolation >> CV_INTER_LINEAR bilinear interpolation (used by default) >> CV_INTER_AREA resampling using pixel area relation. It is the preferred method for image decimation that gives moire-free results. In terms of zooming it is similar to the CV_INTER_NN method >> CV_INTER_CUBIC bicubic interpolation
Renvoi :
static opencv_core.IplImage cvLoadImage(java.lang.String filename) static opencv_core.IplImage cvLoadImage(java.lang.String filename, int iscolor)
Doc openCV :
> filename : chemin du fichier image > iscolor : type d'image renvoye >> 1 : renvoie image RGB 3 canaux >> 0 : renvoie image en niveau de gris (1 canal ?) >> -1 : renvoie image dans son format d'origine
Renvoi :
opencv_highgui.ModeleFonction() Desc :
Javadoc Javacv :
Doc openCV :
Paramtres :
Renvoi :