소개:
작업할 때 OpenCV에서 Point(x,y)를 사용하여 이미지 행렬(cv::Mat)의 픽셀에 액세스하는 것을 눈치챘을 것입니다. (x,y)가 예상한 대로 행과 열을 참조하지 않을 수 있으므로 좌표는 직관적이지 않은 것 같습니다. 이 문서의 목적은 이러한 명백한 불일치를 명확히 하는 것입니다.
좌표계 이해:
수학에서 행렬은 일반적으로 행 우선 순서를 사용하여 액세스됩니다. 행과 두 번째 인덱스는 열을 나타냅니다. 반면에 점은 데카르트 좌표계를 따르며, 여기서 (x,y)는 일반적으로 각각 가로(가로축) 및 세로(세로) 축을 지정합니다.
OpenCV의 행렬 대 좌표계 :
OpenCV에서 이미지와 행렬 모두에 사용되는 cv::Mat는 본질적으로 행렬입니다. 그러나 해당 요소에 액세스할 때는 행 중심 순서를 따릅니다. 따라서 mat.at
그러나 OpenCV의 Point 클래스는 이미지 표기법을 기반으로 합니다. 여기서 (x,y)는 각각 열과 행. 이는 이미지 컨텍스트의 Point(i,j)가 j행과 i열의 픽셀을 참조한다는 의미입니다.
차이가 있는 이유는 무엇입니까?
이러한 불일치는 행렬과 점에 사용되는 서로 다른 좌표계에 있습니다. 행렬은 수학적 이유로 행 중심 순서를 우선시하는 반면, 포인트는 이미지를 더 쉽게 시각화하고 이해하기 위해 이미지 표기법을 우선시합니다.
결론:
OpenCV의 다양한 좌표계 처음에는 혼란스러울 수 있으므로 기본 논리를 이해하면 픽셀 데이터에 올바르게 액세스하고 조작할 수 있습니다. mat.at
위 내용은 OpenCV의 Point(x,y): 열-행 또는 행-열?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!