특징점을 검출한 후에는 입력 영상 어느 위치에서 특징점이 검출되었는지를 영상 위에 직접 표시하여 확인할 수 있습니다. 이때 단순히 특징점 좌표만 보이도록 표현할 수도 있고, 또는 특징점 검출 시 고려한 크기 성분과 주된 방향 성분을 함께 표현할 수도 있습니다. OpenCV는 Feature2D:: detect() 또는 Feature2D::detectAndCompute() 함수에 의해 검출된 특징점을 직접 영상 위에 그린 후, 그 결과 영상을 반환하는 drawKeypoints() 함수를 제공합니다.
void drawKeypoints(InputArray image, const std::vector<KeyPoint>& keypoints, InputOutputArray outImage, const Scalar& color = Scalar::all(-1), DrawMatchesFlags flags = DrawMatchesFlags::DEFAULT); |
|
• image |
입력 영상 |
• keypoints |
입력 영상에서 검출된 키포인트 |
• outImage |
키포인트가 그려진 출력 영상 |
• color |
키포인트 색상. 이 값이 Scalar::all(-1)이면 각 특징점을 임의의 색상으로 그립니다. |
• flags |
키포인트 그리기 방법. DrawMatchesFlags 열거형 상수 중 하나를 지정합니다. |
drawKeypoints() 함수는 입력 영상 image에 키포인트 정보 keypoints를 이용하여 각 키포인트 위치에 원을 그려서 표시한 outImage 영상을 반환합니다. 원의 색상은 color 인자로 지정할 수 있고, color 인자에 Scalar::all(-1)을 지정하면 각 키포인트마다 임의의 색상으로 원을 그립니다. flags 인자는 키포인트 위치에 원을 그리는 방식을 지정하며, 표 14-1에 나타난 DrawMatchesFlags 열거형 상수 중 DEFAULT 또는 DRAW_RICH_KEYPOINTS 상수를 지정할 수 있습니다. flags 인자에 기본값으로 설정되어 있는 DrawMatchesFlags::DEFAULT를 지정하면 모든 키포인트에 반지름이 3인 원을 그립니다. 만약 flags에 DrawMatchesFlags::DRAW_RICH_KEYPOINTS를 지정하면 키포인트의 크기와 주 방향 성분까지 함께 표시합니다.