OpenCV  4.7.0
Open Source Computer Vision
Enumerations | Functions
Drawing Function of Keypoints and Matches

Enumerations

enum  cv::DrawMatchesFlags {
  cv::DrawMatchesFlags::DEFAULT = 0,
  cv::DrawMatchesFlags::DRAW_OVER_OUTIMG = 1,
  cv::DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS = 2,
  cv::DrawMatchesFlags::DRAW_RICH_KEYPOINTS = 4
}
 

Functions

void cv::drawKeypoints (InputArray image, const std::vector< KeyPoint > &keypoints, InputOutputArray outImage, const Scalar &color=Scalar::all(-1), DrawMatchesFlags 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 >(), DrawMatchesFlags 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< DMatch > &matches1to2, InputOutputArray outImg, const int matchesThickness, const Scalar &matchColor=Scalar::all(-1), const Scalar &singlePointColor=Scalar::all(-1), const std::vector< char > &matchesMask=std::vector< char >(), DrawMatchesFlags 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 > >(), DrawMatchesFlags flags=DrawMatchesFlags::DEFAULT)
 

Detailed Description

Enumeration Type Documentation

◆ DrawMatchesFlags

enum cv::DrawMatchesFlags
strong

#include <opencv2/features2d.hpp>

Enumerator
DEFAULT 

Output image matrix will be created (Mat::create), i.e. existing memory of output image may be reused. Two source image, matches and single keypoints will be drawn. For each keypoint only the center point will be drawn (without the circle around keypoint with keypoint size and orientation).

DRAW_OVER_OUTIMG 

Output image matrix will not be created (Mat::create). Matches will be drawn on existing content of output image.

NOT_DRAW_SINGLE_POINTS 

Single keypoints will not be drawn.

DRAW_RICH_KEYPOINTS 

For each keypoint the circle around keypoint with keypoint size and orientation will be drawn.

Function Documentation

◆ drawKeypoints()

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

#include <opencv2/features2d.hpp>

Draws keypoints.

Parameters
imageSource image.
keypointsKeypoints from the source image.
outImageOutput image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below.
colorColor of keypoints.
flagsFlags setting drawing features. Possible flags bit values are defined by DrawMatchesFlags. See details above in drawMatches .
Note
For Python API, flags are modified as cv.DRAW_MATCHES_FLAGS_DEFAULT, cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS, cv.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG, cv.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS

◆ drawMatches() [1/3]

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 >(),
DrawMatchesFlags  flags = DrawMatchesFlags::DEFAULT 
)
Python:
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg, matchesThickness[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatchesKnn(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg

#include <opencv2/features2d.hpp>

Draws the found matches of keypoints from two images.

Parameters
img1First source image.
keypoints1Keypoints from the first source image.
img2Second source image.
keypoints2Keypoints from the second source image.
matches1to2Matches from the first image to the second one, which means that keypoints1[i] has a corresponding point in keypoints2[matches[i]] .
outImgOutput image. Its content depends on the flags value defining what is drawn in the output image. See possible flags bit values below.
matchColorColor of matches (lines and connected keypoints). If matchColor==Scalar::all(-1) , the color is generated randomly.
singlePointColorColor of single keypoints (circles), which means that keypoints do not have the matches. If singlePointColor==Scalar::all(-1) , the color is generated randomly.
matchesMaskMask determining which matches are drawn. If the mask is empty, all matches are drawn.
flagsFlags 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/3]

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 int  matchesThickness,
const Scalar matchColor = Scalar::all(-1),
const Scalar singlePointColor = Scalar::all(-1),
const std::vector< char > &  matchesMask = std::vector< char >(),
DrawMatchesFlags  flags = DrawMatchesFlags::DEFAULT 
)
Python:
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg, matchesThickness[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatchesKnn(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg

#include <opencv2/features2d.hpp>

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

◆ drawMatches() [3/3]

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 > >(),
DrawMatchesFlags  flags = DrawMatchesFlags::DEFAULT 
)
Python:
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatches(img1, keypoints1, img2, keypoints2, matches1to2, outImg, matchesThickness[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg
cv.drawMatchesKnn(img1, keypoints1, img2, keypoints2, matches1to2, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]) -> outImg