OpenCV는 컴퓨터 비전에서 주로 사용되는 자료형 클래스를 지원하고 있습니다.
먼저 픽셀의 좌표를 표현하는 Point_ 클래스에 대해 알아봅니다.
픽셀의 좌표 나타내기 : Point_ 클래스
Point_ 클래스는 2차원 좌표평면의 점을 나타내는 템플릿 클래스입니다.
따라서 좌표평면의 x와 y 변수를 가지게 됩니다.
선언하기
Point_ 클래스는 다음과 같이 정의되어 있습니다.
각 경우마다 초기화 값이 다르게 지정되기 때문에 원하는 case에 맞게 선언하여 사용할 수 있습니다.
Point_(); // 초기화 : x=0, y=0 Point_(_Tp _x, _Tp _y); // 초기화 : x=_x, y=_y Point_( const Point_& pt); // 초기화 : x=pt.x, y=pt.y |
실제 프로그램으로 나타내면 다음과 같습니다.
Point pt1; // pt1 = (0,0) pt1.x = 5; // pt1 = (5,0) pt1.y=15; // pt1 = (5,15) Point pt2(15, 35); // pt2 = (15,35) |
자료형 재정의하기
템플릿 클래스이기 때문에 x, y 변수가 실제 사용할 때 어떤 자료형으로 표현되는지는 반드시 명시해 주어야 합니다.
매번 프로그래밍을 할때 마다 좌표 변수에 대한 자료형을 명시하는 것이 불편하기 때문에
OpenCV에서는 주로 사용하는 자료형에 대해 클래스 이름을 재 정의하여 제공하고 있습니다.
typedef Point_<int> Point2i; //정수형 typedef Point_<int64> Point2l; typedef Point_<float> Point2f; //float 형 typedef Point_<double> Point2d; typedef Point2i Point; |
점의 좌표를 int형으로 나타낼 경우 Point2i 클래스를 사용하고
실수 형태로 나타낼 경우 Point2f를 사용하면 됩니다.
OpenCV는 주로 사용하는 형태가 정수형이기 때문에 Poin2i를 Point로 사용하고 있습니다.
Point_ 클래스 멤버함수
Point_ 클래스는 일반적인 4칙 연산을 수행할 수 있으며
Point_ 클래스가 가지는 고유의 멤버 함수를 다음과 같이 제공하고 있습니다.
- dot( Point_ ) : 두점 사이의 내적 (dot product)를 return
- ddot( Point_ ) : 두점 사이의 내적 (dot product)를 double형으로 return
- cross( Point_ ) : 두점 사이의 외적(cross product)를 return
- inside( Rect_ r ) : 점의 좌표가 사각형 r 영역 안에 있으면 TRUE로 return
Point pt3 = pt1 + pt2; // pt3 = [20, 50] Point pt4 = pt 1 * 4; // pt4 = [10,30] int dotcal = pt1.dot(pt2); // dotcal = 600 (pt1과 pt2의 내적) cout << "pt3: " << pt3 << endl; cout << "pt4: " << pt4 << endl; cout << "dotcal : " << dotcal << endl; |
+와 * 등의 사칙연산의 경우는 x변수는 x변수끼리, y 변수는 y변수끼리 사칙 연산을 수행합니다.
OpenCV에서 제공하는 자료형 클래스는 C++ 표준 출력을 지원하기 때문에
cout과 << 연산자를 이용하여 변수 값을 확인할 수 있습니다.
이상으로 OpenCV의 Point_ 클래스에 대해 확인하였습니다.
2차원 좌표 평면에서 ( x, y ) 를 표현하는데 유용한 클래스입니다.
도움이 되셨기를 바랍니다.
'IT' 카테고리의 다른 글
OpenCV Size_ 클래스 (0) | 2023.05.18 |
---|---|
OpenCV 개발툴 - Visual Studio 2019 (0) | 2023.05.17 |
OpenCV 설치 및 빌드하기 (window버젼) (0) | 2023.04.12 |
OpenCV 빌드를 위한 CMake 설정 (0) | 2023.04.11 |
Python URL 쉽게 다루기 (0) | 2023.02.10 |