Maison >développement back-end >C++ >Point (x, y) d'OpenCV : colonne-ligne ou ligne-colonne ?

Point (x, y) d'OpenCV : colonne-ligne ou ligne-colonne ?

DDD
DDDoriginal
2024-12-08 14:19:09616parcourir

OpenCV's Point(x,y): Column-Row or Row-Column?

OpenCV : le point (x, y) représente une colonne et une ligne au lieu d'une ligne et d'une colonne ?

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(i,j) accède au pixel de la ligne i et de la colonne j.

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(i,j) utilise l'ordre des lignes principales, tandis que Point(x,y) utilise la notation d'image.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn