見つかったプロファイル(輪郭を見つける。)
プロファイルは、エッジ画像抽出方法に基づいて、物体輪郭の基礎を見つけることが見出されています。
したがって、選択されたエッジ抽出のしきい値は、最終的な輪郭の所見に影響を与えます
// 検索輪郭 CV :: findContours( InputOutputArray BINIMG、 // 入力画像画素は、画素値1,0、「ビット。8-不変ゼロ以外とみなされる OutputArrayOfArrays輪郭は、 // オブジェクトの全体の輪郭が見出さ OutputArrayをhierachy // トポロジー図はまた、輪郭トポロジ発見アルゴリズムを画像に基づいて実現される。 INTモード、 // 輪郭モード INTの方法、 // 発見方法 ポイント点オフセット=() // 輪郭画素変位デフォルト(0、0)なし変位 ) // 輪郭 drawContours( InputOutputArray BINIMG、 // 出力画像 輪郭OutputArrayOfArrays、 // すべてで見つかったオブジェクトの輪郭 のInt contourIdx // 輪郭インデックス のconstスカラー&カラー、 // 色のレンダリング時に int型の 厚さを、 // 線幅描画 int型の 線種を、 // ラインタイプLINE_8 InputArray階層、 // トポロジー図の構造。 int型 maxLevel、 // 層の最大数、0引き出される電流、1は、埋め込み描画描画現在の輪郭を表す ポイントポイント=()オフセット // 必要に応じて、輪郭の変位を }
マットSRC、DST。 int型 threshold_valueに= 100 ; int型 threshold_max = 255 ; RNGのRNG。 無効 Demo_Contours(int型、無効 * ); INTメイン(int型 ARGC、チャー ** ARGV){ SRC = 関数imread(STRPAHT)。 もし(src.empty()){ のprintf(" ... \ nの画像をロードできませんでした" )。 戻る - 1 。 } cvtColor(SRC、SRC、CV_BGR2GRAY)。 createTrackbar(" しきい値:"、" findcontours -デモ"、&threshold_valueに、threshold_max、Demo_Contours)。 Demo_Contours(0、0 ); waitKey(0 )。 リターン 0 ; } ボイド Demo_Contours(INT、ボイド * ){ マットcanny_output。 ベクトル <ベクトル<ポイント>> 輪郭。 ベクトル <Vec4i> hierachy。 キャニー(SRC、canny_output、threshold_valueに、threshold_valueに * 2、3、偽の);
//发现 findContours(canny_output、輪郭、hierachy、RETR_TREE、CHAIN_APPROX_SIMPLE、点(0、0 )); DST = マット::ゼロ(src.size()、CV_8UC3)。 RNGのRNG(12345 )。 以下のためには(size_t i = 0 ; iが++; iがcontours.size()< {) スカラー色 =スカラー(rng.uniform(0、255)、rng.uniform(0、255)、rng.uniform(0、255 )) ;
//绘制 drawContours(DST、輪郭、I、色、2、8、hierachy、0、点(0、0 )); } 関数imshow(" output_win " 、DST)。 }