Introduction :
Lorsque vous travaillez avec OpenCV, vous avez peut-être remarqué qu'accéder aux pixels dans une matrice d'image (cv::Mat) en utilisant les coordonnées Point(x,y) semble contre-intuitif, car (x,y) peut ne pas faire référence à la ligne et à la colonne comme prévu. Cet article vise à clarifier cette apparente incohérence.
Comprendre les systèmes de coordonnées :
En mathématiques, les matrices sont généralement accessibles en utilisant l'ordre des lignes principales, où le premier index représente le la ligne et le deuxième index représente la colonne. Les points, quant à eux, suivent le système de coordonnées cartésiennes, où (x, y) désigne généralement les axes horizontal (abscisse) et vertical (ordonnée), respectivement.
Matrice et système de coordonnées d'OpenCV :
cv::Mat, utilisé à la fois pour les images et les matrices dans OpenCV, est essentiellement une matrice. Cependant, lors de l'accès à ses éléments, il suit l'ordre des lignes principales. Par conséquent, mat.at
Cependant, la classe Point dans OpenCV est basée sur la notation d'image, où (x,y) fait référence à la colonne et la ligne, respectivement. Cela signifie que Point(i,j) dans un contexte d'image fera référence au pixel de la ligne j et de la colonne i.
Pourquoi la différence ?
La raison de cette incohérence réside dans les différents systèmes de coordonnées utilisés pour les matrices et les points. Les matrices donnent la priorité à l'ordre des lignes principales pour des raisons mathématiques, tandis que les points donnent la priorité à la notation des images pour une visualisation et une compréhension plus faciles des images.
Conclusion :
Alors que les différents systèmes de coordonnées dans OpenCV peut être déroutant au début, comprendre leur logique sous-jacente vous garantira d’accéder et de manipuler correctement les données de pixels. N'oubliez pas que mat.at
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!