OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
輪郭のバウンディングボックスと円の作成

前のチュートリアル: 凸包(Convex Hull)
次のチュートリアル: 輪郭に対する回転バウンディングボックスと楕円の作成

原著者Ana Huamán
互換性OpenCV >= 3.0

目的

このチュートリアルでは、以下の方法を学ぶ:

理論

コード

解説

メイン関数はかなり単純であり、コメントから分かるように以下の処理を行う:

  • 画像を開き、グレースケールに変換し、ノイズを取り除くために平滑化する。
  • ヘッダーが "Source" のウィンドウを作成し、その中にソースファイルを表示する。
  • source_window 上にトラックバーを作成し、それにコールバック関数を割り当てる。一般にコールバック関数は何らかのシグナルに反応するために使われ、ここではトラックバーの状態変化に反応する。"Contours" ウィンドウを "Source" ウィンドウと同時に表示するために、thresh_callback を明示的に一度だけ呼び出す必要がある。

コールバック関数が興味深い処理をすべて行う。

  • 画像中のエッジを検出するために cv::Canny を使う。
  • 輪郭を見つけ、ベクトル contourhierarchy に保存する。
  • 見つかったすべての輪郭に対して、精度 +-3 で、曲線が閉じている必要があると指定してポリゴン近似を適用する。その後、各ポリゴンについてバウンディング矩形を求め、それを boundRect に保存する。最後に、各ポリゴンについて最小外接円を求め、それを centerradius のベクトルに保存する。

必要なものはすべて求められたので、あとは描画するだけである。

  • 符号なし8ビット文字の新しい Mat をゼロで埋めて作成する。これからの描画(矩形と円)をすべて格納する。
  • 各輪郭に対して、ランダムな色を選び、その色で輪郭、バウンディング矩形、最小外接円を描画する。
  • 結果を表示する。新しいウィンドウ "Contours" を作成し、描画に追加したものをすべてその上に表示する。

結果

結果は以下のとおり: