KeyPoint 클래스는 특징점 좌표뿐만 아니라 특징점 검출 시 고려한 주변 영역의 크기, 주된 방향, 옥타브 정보 등을 멤버 변수로 가지고 있습니다. 이러한 정보는 특징점 주변 영역의 특징을 표현하는 기술자 계산 시에도 사용됩니다. 일반적으로 KeyPoint 객체는 사용자가 직접 생성하지 않으며, 특징점 검출 클래스 내부에서 생성하여 사용자에게 반환합니다.
OpenCV에서 제공하는 특징점 검출 및 기술 클래스 일부를 그림 14-8에 나타냈습니다.4 OpenCV에서 특징점 관련 클래스는 모두 Feature2D 클래스를 상속받아 만들어집니다. Feature2D 클래스는 detect(), compute(), detectAndCompute()라는 이름의 가상 멤버 함수를 가지고 있으며, Feature2D 클래스를 상속받은 각각의 특징점 알고리즘 구현 클래스는 이들 멤버 함수 기능을 실제로 구현하도록 설계되어 있습니다. detect() 멤버 함수는 영상에서 키포인트를 검출하고, compute() 함수는 검출된 키포인트를 표현하는 기술자를 생성합니다. detectAndCompute() 멤버 함수는 키포인트 검출과 기술자 생성을 동시에 수행합니다.
▲ 그림 14-8 OpenCV 특징점 검출 및 기술 클래스
4 OpenCV에서 Feature2D 클래스를 상속받아 만들어진 전체 특징점 관련 클래스 목록은 https://docs.opencv.org/4.0.0/d0/d13/classcv_1_1Feature2D.html 웹 사이트에서 확인할 수 있습니다.