私は、人工的なマーカーを見つけなければならないオフィスインテリア(詳細)のウェブカメラストリームからフィードしたOpenCVアプリケーションを持っています。マーカーは白い背景の黒い四角です。私はCannyを使ってエッジを見つけ、輪郭作成のためのcvFindContoursを作り、次にapproxPolyDPとcoを使います。フィルターをかけて候補を見つけて、ローカルヒストグラムを使ってさらにフィルタリングします。bla bla bla ...Cannyの輪郭を輪郭に変換するOpenCV
これは多かれ少なかれ、私がしたいとは限りません。 Cannyが閉じられていない行を作成したとしても、FindContoursは常に閉じたループを返します。私はループを形成するラインの両側を歩く輪郭を得る。 Canny画像(私のマーカー)の閉じた辺については、内側に1つ、外側にもう1つの等高線があります。 私は、この操作で問題が発生する必要があります。
私は各マーカーの2つの輪郭(その深刻ではない)
最も些細なフィルタリングが使用できない(非閉じた輪郭を拒否)
を取得
私の質問:非閉じた輪郭を非閉じたCannyエッジにすることは可能ですか? 上記の2つの問題を解決するための標準的な方法は何ですか?
Cannyは非常に優れたツールですが、2Dのb/w画像を簡単に処理できるものに変換する方法が必要です。コンポーネントの歩いている順番にすべてのピクセルをリストした接続されたコンポーネントのようなもの。だから、私はループをフィルタリングし、approxPolyDPにフィードすることができます。
更新:いくつかの重要なディテールが欠落していました。マーカーは任意の向き(カメラに直面しておらず、直角ではありません)である可能性があります。実際には、私がやっているのは3D投影の推定ですマーカー。
findContours()とdrawContours()は必ず同じイメージで動作するとは限りません。輪郭画像をオーバードローする。この編集では、findContours()の入力がCanny()から来ているという情報も取り除かれました。 –