features2d_drawMatchesKnn

[32bit] 2つの画像からキーポイントの一致を見つけて,それを描画します.

features2d_drawMatchesKnn p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16

p1 = sptr : IntPtr img1
p2 = var : KeyPoint[] keypoints1
p3 = int : int keypoints1Length
p4 = sptr : IntPtr img2
p5 = var : KeyPoint[] keypoints2
p6 = int : int keypoints2Length
p7 = sptr : IntPtr[] matches1to2
p8 = int : int matches1to2Size1
p9 = var : int[] matches1to2Size2
p10 = sptr : IntPtr outImg
p11 = ARGS_SCALAR : Scalar matchColor
p12 = ARGS_SCALAR : Scalar singlePointColor
p13 = var : IntPtr[]? matchesMask
p14 = int : int matchesMaskSize1
p15 = var : int[]? matchesMaskSize2
p16 = int : int flags

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

この関数は,2つの画像のキーポイント同士のマッチを,出力画像に描画します.マッチとは,2つのキーポイント(円)を結ぶ線のことです.cv::DrawMatchesFlags を参照してください.

元関数名(C#): features2d_drawMatchesKnn
元DLLエクスポート名: features2d_drawMatchesKnn
参照元CSファイル: Internal\PInvoke\NativeMethods\features2d\NativeMethods_features2d.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) features2d_drawMatchesKnn(cv::Mat *img1, cv::KeyPoint *keypoints1, int keypoints1Length,
    cv::Mat *img2, cv::KeyPoint *keypoints2, int keypoints2Length,
    cv::DMatch **matches1to2, int matches1to2Size1, int *matches1to2Size2,
    cv::Mat *outImg, MyCvScalar matchColor, MyCvScalar singlePointColor,
    char **matchesMask, int matchesMaskSize1, int *matchesMaskSize2, int flags)
{
    BEGIN_WRAP
    const std::vector<cv::KeyPoint> keypoints1Vec(keypoints1, keypoints1 + keypoints1Length);
    const std::vector<cv::KeyPoint> keypoints2Vec(keypoints2, keypoints2 + keypoints2Length);
    std::vector<std::vector<cv::DMatch> > matches1to2Vec(matches1to2Size1);
    for (int i = 0; i < matches1to2Size1; i++)
    {
        cv::DMatch *p = matches1to2[i];
        matches1to2Vec[i] = std::vector<cv::DMatch>(p, p + matches1to2Size2[i]);
    }

    std::vector<std::vector<char> > matchesMaskVec;
    if (matchesMask != nullptr)
    {
        matchesMaskVec = std::vector<std::vector<char> >(matchesMaskSize1);
        for (int i = 0; i < matchesMaskSize1; i++)
        {
            char *p = matchesMask[i];
            matchesMaskVec[i] = std::vector<char>(p, p + matchesMaskSize2[i]);
        }
    }

    cv::drawMatches(*img1, keypoints1Vec, *img2, keypoints2Vec, matches1to2Vec,
        *outImg, cpp(matchColor), cpp(singlePointColor), matchesMaskVec, static_cast<cv::DrawMatchesFlags>(flags));
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_features2d
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs