Point_ 클래스는 다양한 연산자에 대해 연산자 재정의가 되어 있습니다. 그러므로 다음과 같은 코드를 이용하여 좌표 연산을 수행할 수 있습니다.
// pt1 = [5, 10], pt2 = [10, 30] Point pt3 = pt1 + pt2; // pt3 = [15, 40] Point pt4 = pt1 * 2; // pt4 = [10, 20] int d1 = pt1.dot(pt2); // d1 = 350 bool b1 = (pt1 = = pt2); // b1 = false
이 코드에서 오른쪽에 주석으로 표시된 부분은 연산에 의해 생성되는 Point 객체의 좌표를 나타냅니다. 먼저 Point 객체끼리 덧셈 연산을 하면 x 좌표와 y 좌표를 각각 더하여 새로운 좌표를 생성합니다. 앞선 예제 코드에서 pt1은 (5, 10), pt2는 (10, 30) 좌표를 표현하고 있으므로, pt3에는 (15, 40) 좌표가 저장됩니다. 변수 pt4는 pt1에 정수 2를 곱한 결과이며, 이 경우 pt1의 x 좌표와 y 좌표에 각각 2를 곱하여 pt4에는 (10, 20) 좌표가 저장됩니다. Point::dot() 함수는 두 점의 내적을 계산하는 멤버 함수이며, 두 점의 내적은 x 좌표끼리 곱한 값에 y 좌표끼리 곱한 값을 더하여 계산합니다. 그러므로 d1에는 5×10+10×30=350이 저장됩니다. Point 객체끼리 = = 또는 != 연산자를 이용하여 두 점의 좌표가 서로 같은지 혹은 다른지를 검사할 수도 있습니다. 앞의 코드에서는 pt1과 pt2의 좌표가 서로 같지 않으므로 변수 b1에는 false가 저장됩니다.
OpenCV에서 제공하는 대부분의 자료형 클래스는 C++ 표준 출력을 지원합니다. 그러므로 std::cout과 << 연산자를 이용하여 Point_ 객체의 좌표를 쉽게 출력할 수 있습니다. 다음은 pt1과 pt2 변수에 저장된 좌표를 화면에 출력하는 코드 예제입니다.
cout << "pt1: " << pt1 << endl; cout << "pt2: " << pt2 << endl;
실제로 이 코드를 실행하면 콘솔 창에 다음과 같이 점의 좌표가 출력됩니다.
pt1: [5, 10] pt2: [10, 30]
지금까지 Point_ 클래스의 정의와 사용 방법에 대해 알아봤습니다. Point_ 클래스에 대해 제대로 이해하였다면 이후에 나타나는 Size_, Rect_ 등 클래스도 어렵지 않게 이해할 수 있을 것입니다.