キーポイントとマッチの描画関数

cv::drawMatches

Comments from the Wiki

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

この関数は,2つの画像から得られるキーポイント同士のマッチを,出力画像上に描画します.

マッチは,2つのキーポイント(円)を結ぶ線分で表現されます.

void drawMatches(const Mat& img1, const vector<KeyPoint>& keypoints1, const Mat& img2, const vector<KeyPoint>& keypoints2, const vector<vector<DMatch> >& matches1to2, Mat& 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)
パラメタ:
  • img1 – 1番目の入力画像.
  • keypoints1 – 1番目の入力画像から得られたキーポイント.
  • img2 – 2番目の入力画像.
  • keypoints2 – 2番目の入力画像から得られたキーポイント.
  • matches – 1番目と2番目の画像間のマッチ. つまり, keypoints1[i] は,点 keypoints2[matches[i]] に対応します.
  • outImg – 出力画像.出力画像に何が描画されるかは, flags の値に依存します. 後述の,取り得る flags のビット値を参照してください.
  • matchColor – マッチの色(線分と,それで接続されるキーポイント). matchColor==Scalar::all(-1) の場合,ランダムに色が生成されます.
  • singlePointColor – シングルキーポイント,つまり,マッチを持たないキーポイントの色(円). singlePointColor==Scalar::all(-1) の場合,ランダムに色が生成されます.
  • matchesMask – どのマッチが描画されるかを指定するマスク.これが空の場合は,すべてのマッチが描画されます.
  • flagsflags の各ビットは,描画のプロパティを設定します. 取り得る flags ビット値は, DrawMatchesFlags で定義されます.以下を参照してください.
struct DrawMatchesFlags
{
    enum{ DEFAULT = 0, // 出力画像行列が作成 (Mat::create) されます.
                       // つまり,出力画像の元のメモリ領域が新たに再利用される可能性があります.
                       // 2 つの入力画像,マッチ,シングルキーポイントが描画されます.
                       // 各キーポイントに対しては,中心点のみが描画されます
                       // (キーポイントのサイズと方向を表す周囲の円は描画されません).
          DRAW_OVER_OUTIMG = 1, // 出力画像行列が作成 (Mat::create) されません.
                       // 既存の出力画像上に,マッチが描画されます.
          NOT_DRAW_SINGLE_POINTS = 2, // シングルキーポイントは描画されません.
          DRAW_RICH_KEYPOINTS = 4 // 各キーポイントに対して,そのサイズと方向を表す
                       // 周囲の円が描画されます.
        };
};

cv::drawKeypoints

Comments from the Wiki

void drawKeypoints(const Mat& image, const vector<KeyPoint>& keypoints, Mat& outImg, const Scalar& color=Scalar::all(-1), int flags=DrawMatchesFlags::DEFAULT)

キーポイントを描画します.

パラメタ:
  • image – 入力画像.
  • keypoints – 入力画像から得られたキーポイント.
  • outImg – 出力画像.出力画像に何が描画されるかは, flags の値に依存します. 取り得る flags のビット値を参照してください.
  • color – キーポイントの色.
  • flagsflags の各ビットは,描画のプロパティを設定します. 取り得る flags ビット値は, DrawMatchesFlags で定義されます. 上述の drawMatches() の項を参照してください.

目次

このページ