OpenCV: Drawing Function of Keypoints and Matches

| OpenCV 3.4.2 Open Source Computer Vision

Classes | Functions
Drawing Function of Keypoints and Matches
2D Features Framework

## Classes
struct | cv::DrawMatchesFlags

## 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. More...
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. More...
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 Description

## Function Documentation

## ◆ drawKeypoints()

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

Draws keypoints.

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 .

Note
  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

## ◆ drawMatches() [1/2]

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.

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.

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

## ◆ drawMatches() [2/2]

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.