Drawing Function of Keypoints and Matches

Overview

// structs

struct cv::DrawMatchesFlags;

// global functions

void
cv::drawKeypoints(
    InputArray image,
    const std::vector<KeyPoint>& keypoints,
    InputOutputArray outImage,
    const Scalar& color = Scalar::all(-1),
    int flags = DrawMatchesFlags::DEFAULT
    );

void
cv::drawMatches(
    InputArray img1,
    const std::vector<KeyPoint>& keypoints1,
    InputArray img2,
    const std::vector<KeyPoint>& keypoints2,
    const std::vector<DMatch>& matches1to2,
    InputOutputArray outImg,
    const Scalar& matchColor = Scalar::all(-1),
    const Scalar& singlePointColor = Scalar::all(-1),
    const std::vector<char>& matchesMask = std::vector<char>(),
    int flags = DrawMatchesFlags::DEFAULT
    );

void
cv::drawMatches(
    InputArray img1,
    const std::vector<KeyPoint>& keypoints1,
    InputArray img2,
    const std::vector<KeyPoint>& keypoints2,
    const std::vector<std::vector<DMatch>>& matches1to2,
    InputOutputArray outImg,
    const Scalar& matchColor = Scalar::all(-1),
    const Scalar& singlePointColor = Scalar::all(-1),
    const std::vector<std::vector<char>>& matchesMask = std::vector<std::vector<char>>(),
    int flags = DrawMatchesFlags::DEFAULT
    );

Detailed Documentation

Global Functions

void
cv::drawKeypoints(
    InputArray image,
    const std::vector<KeyPoint>& keypoints,
    InputOutputArray outImage,
    const Scalar& color = Scalar::all(-1),
    int flags = DrawMatchesFlags::DEFAULT
    )

Draws keypoints.

For Python API, flags are modified as cv2.DRAW_MATCHES_FLAGS_DEFAULT, cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS, cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG, cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS

Parameters:

image Source image.
keypoints Keypoints from the source image.
outImage Output image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below.
color Color of keypoints.
flags Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. See details above in drawMatches .
void
cv::drawMatches(
    InputArray img1,
    const std::vector<KeyPoint>& keypoints1,
    InputArray img2,
    const std::vector<KeyPoint>& keypoints2,
    const std::vector<DMatch>& matches1to2,
    InputOutputArray outImg,
    const Scalar& matchColor = Scalar::all(-1),
    const Scalar& singlePointColor = Scalar::all(-1),
    const std::vector<char>& matchesMask = std::vector<char>(),
    int flags = DrawMatchesFlags::DEFAULT
    )

Draws the found matches of keypoints from two images.

This function draws matches of keypoints from two images in the output image. Match is a line connecting two keypoints (circles). See cv::DrawMatchesFlags.

Parameters:

img1 First source image.
keypoints1 Keypoints from the first source image.
img2 Second source image.
keypoints2 Keypoints from the second source image.
matches1to2 Matches from the first image to the second one, which means that keypoints1[i] has a corresponding point in keypoints2[matches[i]] .
outImg Output image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below.
matchColor Color of matches (lines and connected keypoints). If matchColor== Scalar::all (-1) , the color is generated randomly.
singlePointColor Color of single keypoints (circles), which means that keypoints do not have the matches. If singlePointColor== Scalar::all (-1) , the color is generated randomly.
matchesMask Mask determining which matches are drawn. If the mask is empty, all matches are drawn.
flags Flags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags.
void
cv::drawMatches(
    InputArray img1,
    const std::vector<KeyPoint>& keypoints1,
    InputArray img2,
    const std::vector<KeyPoint>& keypoints2,
    const std::vector<std::vector<DMatch>>& matches1to2,
    InputOutputArray outImg,
    const Scalar& matchColor = Scalar::all(-1),
    const Scalar& singlePointColor = Scalar::all(-1),
    const std::vector<std::vector<char>>& matchesMask = std::vector<std::vector<char>>(),
    int flags = DrawMatchesFlags::DEFAULT
    )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.