더북(TheBook)

코드 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.xpt1.y는 0으로 초기화됩니다. 그러므로 기본 생성자로 생성된 변수 pt1은 (0, 0) 좌표를 나타냅니다. 앞 코드의 두 번째 행에서는 pt1.x에 5를 대입하고, pt1.y에는 10을 대입함으로써 pt1 변수가 (5, 10) 좌표를 나타내도록 변경했습니다. 변수 pt2는 생성과 동시에 (10, 30) 좌표를 나타냅니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.