[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 |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_imgproc |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |