問題タブ [opencv-contour]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opencv - 物体検出を改善するにはどうすればよいですか?
オブジェクト検出用に設計されたプロジェクトを改善したいと考えています。
まず、実際の結果を得るために を使用absdiff
し、次に次の操作を使用します。
私の最後の手術はfindContours(canny_output, *contours, *hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
accumulate
これは、関数 (20 フレーム)を使用して取得したすべての関数と前景を使用した後の結果です。
前景: http://j71i.imgup.net/foregroundc3dc.PNG
減算: http://p81i.imgup.net/subtractio2866.PNG
ソーベル: http://g51i.imgup.net/sobela1fb.PNG
しきい値: http://p46i.imgup.net/treshold14c9.PNG
拡張、浸食、キャニー:
http://q68i.imgup.net/canny2e1a.PNG
findContours: http://v76i.imgup.net/contours6845.PNG
バックグラウンドもaccumulate
関数から取得されます。
コーナーまたは輪郭の検出を改善するのを手伝ってもらえますか? オブジェクトのサイズをピクセル単位で取得するために必要です。
前もって感謝します!
c++ - OpenCV 3.0 アクティブ輪郭 (スネーク) アルゴリズム
現在の状況:画像内の長方形 (または正方形) を検出したいのですが、これらの長方形の輪郭が一貫していません。外側の輪郭に全体があるチェス盤のように。
考えられる解決策:オブジェクトの外側の輪郭を検出するのに役立つアクティブな輪郭アルゴリズムを実装しようとしています。オブジェクトの外側にいくつかのポイントがあることを知っています。オブジェクトが収まる限り、ポイントを縮小してフィットさせるために使用できます。
検索:古いバージョンの openCV の cvSnakeImage Function を見つけました。これはメンテナンスされておらず、今後使用すべきではありません。古いopenCVとboostライブラリも使用するアクティブな輪郭C++実装を見つけました。試してみましたが、コードをビルドできませんでした。HiDiYANG/アクティブコンター
- cvSnake 実装を使用して投稿する
- Opencv 3.0 への Matlab の移植
- このトピックのその他の記事: SNAKES: アクティブな輪郭モデル
質問: OpenCV で利用可能なアクティブな輪郭アルゴリズムの現在の実装はありますか? 実装を理解するために時間を費やす必要がある最適な実装はありますか?
画像の例: 灰色の境界線上に点がある最初の画像があり、赤い四角形 (2 番目の画像) を取得したいと考えています。
python - OpenCV (Python) を使用して輪郭検出を改善する
写真からカードを識別しようとしています。理想的な写真でやりたいことはできましたが、照明が少し異なるなどで同じ手順を適用するのに苦労しています。したがって、問題は次の輪郭検出をより堅牢にすることです。
テイカーが興味のある画像を作成できるようにするには、コードの大部分を共有する必要がありますが、私の質問は最後のブロックと画像にのみ関連しています。
次に、カードが検出されます。
パースペクティブは次のように修正されます。
それは私が私の問題を抱えていたということでした。形状の輪郭を検出したい。私が見つけた最良の方法は、灰色の画像でbilateralFilter
とを組み合わせて使用することです。AdaptativeThreshold
これは私が望むものに非常に近いですが、どのように改善して、白で閉じた輪郭を取得し、他のすべてを黒で取得できますか?
python - OpenCV Python での findContour の精度の向上
以下に示すこれらの「斑点」のそれぞれに最小境界ボックスを合わせようとしています。画像処理パイプラインの一部として、findContours を使用してデータ内の輪郭を検出し、検出された輪郭の配列を指定して最小境界ボックスを描画します。
最小境界ボックスはあまり正確ではありません。一部のフィーチャは明らかに見落とされていますが、他のフィーチャは完全に接続されたフィーチャを完全に「カプセル化」できません (代わりに、いくつかの小さな最小境界ボックスに分割されます)。検索モード(以下に示す RETR_TREE) と輪郭近似方法(以下に示す CHAIN_APPROX_TC89_L1) をいじってみましたが、本当に気に入ったものを見つけることができませんでした。OpenCV Pythonを使用してこれらの輪郭をより正確にキャプチャするためのより堅牢な戦略を誰かが提案できますか?
** 編集: Sturkman の提案によると、すべての可能な輪郭を描画すると、視覚的に検出可能なすべての機能がカバーされるように見えました。
python - 画像内で検出された長方形の回転
画像から検出された長方形を抽出する必要があります。長方形は、未知の任意の角度で回転します。この投稿を見ました:回転した長方形をまっすぐにする方法
しかし、次の 2 つの問題があります。
- 数学的に解ける「シータ」の計算方法。
- この投稿のコード スニペットは、
cv
notに対してのみ機能しcv2
ます。
この投稿よりも良い解決策がある人はいますか? で完全に開発されたソリューションcv2
RotateRect 関数を使用しました。どちらの場合も、長方形を検出して描画しました。問題は角度です。どちらの場合も、天使はネガティブに検出されます。それらの少なくとも 1 つが正である必要があります。そのため、リンクに従って正しく回転できません。質問に添付した写真を見てください。
c++ - 面積が最大のものを除くすべての輪郭を画像から差し引く
最大等高線のインデックスを見つけた後、どうすればよいですか? 内側の領域で他のすべての輪郭を削除するにはどうすればよいですか? イメージはバイナリ (cv::Mat thr) です。黒い背景に白い部分だけ。ありがとう。
python - 認識されたポリゴンの周りにopencvで輪郭を描く
私はOpenCV-Pythonに取り組んでいます。ウェブカメラによるライブフィードからこのような画像があります(下の画像ですが、明るい緑色の線はありません)。コーナーの座標が見つかりました。
ポリゴンの。画像に示されている薄緑色の線のように、認識されたポリゴンの周りに線を引く方法は?
c - 輪郭から検出された円の太さを見つけますか?
以下のコードから受け取った円の太さを検出しようとしていますが、検出できません。
私の基本的な考え方は、円の中を移動することです。任意の点で厚さが反対側よりも小さい場合、それは不良円であることを意味します。
これをGoogleで見つけましたが、コードに入れる方法がわかりません:
http://answers.opencv.org/question/28180/measuring-edge-thickness-using-opencv
コード:
この後、輪郭を見つける必要があることはわかっていますが、円の厚さを取得し、円を移動して欠陥のある円を取得するにはどうすればよいですか? ピクセル数を取得して欠陥のある円を検出したくない...
上記のコードを実行すると、この画像が表示されます
python - opencvで回転楕円の長軸の開始座標と終了座標(x、y)を取得するには?
オブジェクトのモーション トラッキングを実行しており、オブジェクトの前後を識別しようとしています。オブジェクトは非対称です。これは、輪郭の重心が背面よりも前面に近いことを意味します。この情報を使用して、次のようにアプローチしています。
オブジェクトの輪郭を描く
重心を見つける
境界楕円を描く
次のように長軸の長さを計算します (および図に示すように)。
主軸の開始と終了の x、y 座標を計算します
/li>どの点が輪郭の重心に近いかを特定します
/li>
私が遭遇している問題は、ほとんどの場合、楕円の「前」端を正しく取得していますが、ポイントが少し離れている場合があります。私が観察した限りでは、これは x の値は正しいが、y の値が異なるように発生しているようです (実際、これは私のものに垂直な楕円の長軸を表していると思います)。これがopencvの角度の計算の問題なのか、それとも(おそらく)私の計算が間違っているのかはわかりません。これは複雑な例だと思いますが、私の図がお役に立てば幸いです!
編集:間違った点を取得すると、それは垂直楕円からではなく、楕円の鏡像からのものです。また、y だけでなく、x 値でも発生します。
以下のssmの提案に従った後、ほとんどの場合、目的のポイントを取得しています. ポイントはまだ時々間違っていますが、すぐに元の位置に「スナップバック」します。たとえば、これが発生したときのいくつかのフレームは次のとおりです。
ちなみに、上記の画像は、次のコードを使用して角度を「修正」した後のものです。
修正を行わないと、同じフレームについて以下に示すように、別の時点で間違ったポイントが得られます。
そのため、角度補正のある角度と補正なしの他の角度では正しいように見えます。両方の条件で適切なポイントをすべて取得するにはどうすればよいですか?
(楕円の内側の白い点は輪郭の重心ですが、楕円の上または外側の点は私が得ている点です)