### Navigation

- index
- next |
- previous |
- OpenCV 3.0.0-dev documentation »
- OpenCV API Reference »
- features2d. 2D Features Framework »

# Drawing Function of Keypoints and Matches

## drawMatches

Draws the found matches of keypoints from two images.

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

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

Python:`` `cv2.``drawMatches`(img1, keypoints1, img2, keypoints2, matches1to2[, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]]) → outImg

Python:`` `cv2.``drawMatchesKnn`(img1, keypoints1, img2, keypoints2, matches1to2[, outImg[, matchColor[, singlePointColor[, matchesMask[, flags]]]]]) → outImg

  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). The structure `DrawMatchesFlags` is defined as follows:

    struct DrawMatchesFlags
    {
        enum
        {
            DEFAULT = 0, // Output image matrix will be created (Mat::create),
                         // i.e. existing memory of output image may be reused.
                         // Two source images, matches, and single keypoints
                         // will be drawn.
                         // For each keypoint, only the center point will be
                         // drawn (without a circle around the keypoint with the
                         // keypoint size and orientation).
            DRAW_OVER_OUTIMG = 1, // Output image matrix will not be
                           // created (using Mat::create). Matches will be drawn
                           // on existing content of output image.
            NOT_DRAW_SINGLE_POINTS = 2, // Single keypoints will not be drawn.
            DRAW_RICH_KEYPOINTS = 4 // For each keypoint, the circle around
                           // keypoint with keypoint size and orientation will
                           // be drawn.
        };
    };

## drawKeypoints

Draws keypoints.

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

Python:`` `cv2.``drawKeypoints`(image, keypoints[, outImage[, color[, flags]]]) → outImage

  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

## Help and Feedback

You did not find what you were looking for?

- Ask a question on the Q&A forum.
- If you think something is missing or wrong in the documentation, please file a bug report.

### Navigation

- index
- next |
- previous |
- OpenCV 3.0.0-dev documentation »
- OpenCV API Reference »
- features2d. 2D Features Framework »