코드 3-1에서 볼 수 있듯이 Point_ 클래스는 템플릿 클래스이기 때문에 실제로 사용할 때에는 어떤 자료형으로 좌표를 표현할 것인지를 명시해야 합니다. 예를 들어 정수 좌표를 표현하려면 Point_<int> 클래스를 사용해야 합니다. 다만 Point_ 클래스를 사용할 때마다 자료형을 명시하는 것이 다소 번거로울 수 있어서 OpenCV는 자주 사용하는 자료형에 대하여 Point_ 클래스 이름을 재정의하여 제공합니다. 코드 3-1에서 19~23행 문장이 다양한 자료형에 대한 Point_ 클래스 이름 재정의입니다. 즉, 정수형 int 자료형으로 점의 좌표를 표현하려면 Point2i 클래스를 사용하고, float 자료형을 사용하려면 Point2f 클래스를 사용합니다. 특히 정수형 좌표를 표현하는 경우가 많기 때문에 Point2i 클래스는 좀 더 일반적인 이름인 Point 클래스로 다시 재정의하였습니다. 그러므로 OpenCV 소스 코드에서 Point 클래스는 2차원 정수 좌표계에서 좌표를 표현하는 자료형이라고 생각하면 됩니다.
Point_ 클래스를 사용하는 코드 작성 방법에 대해 알아보겠습니다. 2차원 정수 좌표계에서 점의 좌표를 표현하려면 다음과 같이 코드를 작성할 수 있습니다.
Point pt1; // pt1 = (0, 0) pt1.x = 5; pt1.y = 10; // pt1 = (5, 10) Point pt2(10, 30); // pt2 = (10, 30)
이 코드에서 변수 pt1은 기본 생성자를 사용하여 생성되었으며, 이 경우 멤버 변수 pt1.x와 pt1.y는 0으로 초기화됩니다. 그러므로 기본 생성자로 생성된 변수 pt1은 (0, 0) 좌표를 나타냅니다. 앞 코드의 두 번째 행에서는 pt1.x에 5를 대입하고, pt1.y에는 10을 대입함으로써 pt1 변수가 (5, 10) 좌표를 나타내도록 변경했습니다. 변수 pt2는 생성과 동시에 (10, 30) 좌표를 나타냅니다.