Documente Academic
Documente Profesional
Documente Cultură
OpenCV a été libéré en 2001. À cette époque, il avait une API C qui était extrêmement lourd à
utiliser.
a été lancé OpenCV 2.0 avec une interface C ++ qui a rendu la vie des programmeurs plus facile.
L'API C ++ est une amélioration substantielle par rapport à l'API C avec de nombreuses
fonctionnalités intéressantes, y compris la gestion automatique de la mémoire.
La classe Mat, introduit dans OpenCV 2.0, a deux objectifs très importants
• Il sert de récipient d'image de base.
• Il sert également de la matrice.
Remarque : Lorsqueutilisez l'interface C ++,données allouées dans la classe Mat est gérée par
OpenCV. Vous n'avez pas besoin de libérer cette mémoire explicitesauf dans certaines circonstances
rares.
Dans l'exemple ci-dessous, l'image d'un original est clone avec le masque binaire dans le centre
pour produire une sortie B. Seuls les pixels ayant une valeur> 0 sont copiés vers B.
Image originale (A) Masque Clone (B) en utilisant copyTo
En variante, la taille () méthode retourne un objet de taille des caractères Taille (colonnes, lignes) .
Remarque: Le nombre de colonnes est égalelargeur et le nombre de lignes est égalela hauteur.
Ainsilorsspécification Tailleutilisanthauteur etlargeur, il faut utiliser la taille (largeur, hauteur) .
// Find height and width using Size
Mat M;
Size sz = M.size();
// number of rows
sz.height;
// number of columns
sz.width;
Crée un 3 par 3 matrice ayant 9 éléments. Chaque élément comporte trois volets.
// Print a matrix using
cout << M << endl;
// Ouput
[0,255,180, 0,255,180, 0,255,180;
0,255,180, 0,255,180, 0,255,180;
0,255,180, 0,255,180, 0,255,180]
// Create a 2-dimensional matrix with the above size filled with 20.
Mat L(2, size, CV_8U, Scalar::all(20));
// Output
[ 20, 20, 20, 20;
20, 20, 20, 20;
20, 20, 20, 20;
20, 20, 20, 20]
// Output
[ 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0]
En utilisant cette méthode nous ne pouvons pas initialiser la matrice selon notre choix de valeur.
Cela crée une matrice 4 x 4 avec toutes les valeurs initialisées à 0. Impression de la matrice en
utilisant Cout imprimerait la sortie suivante.
// Output
[1,1,1;
1,1,1;
1,1,1]
Pour créer une matrice avec toutes les entrées de données initialisées à 0:
Mat A = Mat :: zéros (pas de lignes, pas Col., et aucun type de données de canaux...)
// Create a matrix with all elements initialized to 0
Mat M2 = Mat::zeros(3, 3, CV_64F);
cout << M2 << endl;
// Output
[0,0,0;
0,0,0;
0,0,0]
Pour créer une matrice d'identité (une matrice d'identité a tous les principaux éléments de la
diagonale que les éléments 1 et de repos sont 0)
Mat A = Mat :: oeil (pas. Rangées, non. Col., et pas de type de données canaux.)
// Create 3x3 identity matrix
Mat M3 = Mat::eye(3, 3, CV_64F);
cout << M3 << endl;
// Output
[1,0,0;
0,1,0;
0,0,1]
// Output
[ 0,-1, 0;
-1, 5, 6;
0, -3, 3]