imgproc_drawContours_InputArray

[32bit] 輪郭のアウトラインや塗りつぶした輪郭を描画します.

imgproc_drawContours_InputArray p1,p2,p3,p4,p5,p6,p7,p8,p9,p10

p1 = sptr : IntPtr image
p2 = sptr : IntPtr[] contours
p3 = int : int contoursLength
p4 = int : int contourIdx
p5 = ARGS_SCALAR : Scalar color
p6 = int : int thickness
p7 = int : int lineType
p8 = sptr : IntPtr hierarchy
p9 = int : int maxLevel
p10 = ARGS_POINT : Point offset

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

解説

この関数は,画像に輪郭を描きます(\\).以下の例では,2値画像から連結成分を取り出し,ラベルを付ける方法を示しています: :#include "opencv2/imgproc.hpp "#include "opencv2/highgui.hpp "using namespace cv;using namespace std;int main( int argc, char** argv ){ Mat src; // 最初のコマンドラインパラメータは,バイナリ(白黒)画像のファイル名でなければいけません // if( argc != 2 || !(src=imread(argv[1], 0).data) return -1; Mat dst = Mat::zeros(src.rows, src.cols, CV_8UC3); src = src > 1; namedWindow( "Source", 1 ); imshow( "Source", src ); vector<vector<Point> > contours; vector<Vec4i> hierarchy;    findContours( src, contours, hierarchy, RETR_CCOMP, CHAIN_APPROX_SIMPLE ); // すべてのトップレベルの輪郭を繰り返し処理して、 // 接続された各コンポーネントをそれぞれのランダムな色で描画します int idx = 0; for( ; idx >= 0;idx = hierarchy[idx][0] ) { Scalar color( rand()&255, rand()&255, rand()&255 ); drawContours( dst, contours, idx, color, FILLED, 8, hierarchy ); } namedWindow( "Components", 1 );    imshow( "Components", dst ); waitKey(0);}fragmentNote thickness=FILLEDにすると、階層の日付が指定されていなくても、穴の開いた連結部品を正しく扱えるようになっています。これは、偶奇則を用いてすべてのアウトラインをまとめて解析することで実現しています。これは、別々に検索された輪郭の共同コレクションがある場合、誤った結果を与える可能性があります。この問題を解決するには、輪郭のサブグループごとに別々に drawContours を呼び出すか、contourIdx パラメータを使ってコレクションを反復処理する必要があります。例: samples/cpp/contours2.cpp, samples/cpp/segment_objects.cpp, samples/cpp/tutorial_code/ml/introduction_to_pca/introduction_to_pca.cpp, samples/cpp/watershed.cpp.

元関数名(C#): imgproc_drawContours_InputArray
元DLLエクスポート名: imgproc_drawContours_InputArray
参照元CSファイル: Internal\PInvoke\NativeMethods\imgproc\NativeMethods_imgproc.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) imgproc_drawContours_InputArray(cv::_InputOutputArray *image,
                                            cv::Mat **contours, int contoursLength,
                                            int contourIdx, MyCvScalar color, int thickness, int lineType,
                                            cv::_InputArray *hierarchy, int maxLevel, MyCvPoint offset)
{
    BEGIN_WRAP
    std::vector<std::vector<cv::Point> > contoursVec(contoursLength);
    for (auto i = 0; i < contoursLength; i++)
        contoursVec[i] = *contours[i];
    cv::drawContours(
        *image, contoursVec, contourIdx, cpp(color), thickness, lineType, entity(hierarchy), maxLevel, cpp(offset));
    END_WRAP
}

情報

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