Maison >développement back-end >C++ >En quoi le « Point(x,y) » d'OpenCV diffère-t-il de « at(i,j) » dans Matrix Access ?
Dans les bibliothèques de traitement d'images comme OpenCV, le système de coordonnées et l'ordre des éléments de la matrice peuvent prêter à confusion. Cet article vise à clarifier ces concepts, notamment l'utilisation de Point(x,y) dans OpenCV par rapport à at(i,j) pour accéder aux éléments de la matrice.
Cv d'OpenCV : La structure de données :Mat est utilisée à la fois pour les images et les matrices. Mathématiquement, les matrices sont classées dans l'ordre des lignes principales, ce qui signifie que le premier index désigne la ligne et le deuxième index la colonne.
Les points d'un système de coordonnées sont généralement classés avec le x -axe en premier et l'axe y en second (système de coordonnées cartésiennes). Cependant, dans le traitement d'image, l'ordre des axes utilisé est connu sous le nom de notation d'image, où la première valeur représente la direction x (abscisse) et la deuxième valeur la direction y (ordonnée).
La méthode at(i,j) d'OCV permet d'accéder aux éléments à l'aide d'indices (ligne, colonne), le coin supérieur gauche de la matrice étant (0,0).
Le constructeur Point(x,y) dans OpenCV permet d'accéder aux éléments d'un cv::Mat en utilisant la notation d'image, où x représente la colonne et y la ligne.
Considérons une matrice 300x200 (src) :
for (int i = 0; i < src.rows; i++) { for (int j = 0; j < src.cols; j++) { line(src, Point(i, j), Point(i, j), Scalar(255, 0, 0), 1, 8); } }
Ce code a pour but de tracer un trait blanc sur toute l'image. Cependant, il ne remplit que la partie supérieure de l'image. En effet, la fonction line utilise le constructeur Point(i,j), qui interprète i comme colonne et j comme ligne.
Utiliser at(i,j) au lieu de Point(i,j) remplissez correctement toute l'image avec du blanc, car elle utilise l'ordre (ligne, colonne).
Comprendre la distinction entre l'ordre ligne/colonne dans Les matrices et la notation d'image utilisées pour les points dans OpenCV sont cruciales pour manipuler efficacement les images et les matrices dans OpenCV. La méthode at(i,j) et le constructeur Point(x,y) offrent des moyens pratiques d'accéder aux éléments basés sur différents systèmes de coordonnées, répondant aux besoins spécifiques de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!