| OpenCV 3.4.1 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`
| ) |  |

Python:
| outImage | = | cv.drawKeypoints( | image, keypoints, outImage[, color[, flags]] | )

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`
| ) |  |

Python:
| outImg | = | cv.drawMatches( | img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]] | )
| outImg | = | cv.drawMatchesKnn( | img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]] | )

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`
| ) |  |

Python:
| outImg | = | cv.drawMatches( | img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]] | )
| outImg | = | cv.drawMatchesKnn( | img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]] | )

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