問題タブ [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.
python - OpenCV: 検出された動きの上に境界線を描く
私は OpenCV の初心者で、それを学ぶことにしましたが、動きを検出してオブジェクトにバウンディング ボックスを描画する小さなプログラムを作成しています。
2 つのフレームの差を単純に計算し、輪郭を見つけて、オブジェクトの周りに単純な長方形を描くというかなり単純な方法から始めました。これはしばらくの間その目的を果たしましたが、複数のオブジェクトがポップアップしたときに自律的に追跡することはできませんでした. n個のオブジェクトを追跡するには、パラメーターを手動で変更する必要がありました。
そこで、メソッドを変更して代わりに を使用することにしBackgroundSubtractorMOG
ました。この方法は、私が達成しようとしているものにより適していますが、現在私が抱えている唯一の問題は、適用後に検出されたオブジェクトの輪郭を描く方法BackgroundSubtractorMOG
です。長方形はもう必要ありません。代わりに、オブジェクトの境界線の周りに描画したいのです。
opencv - 輪郭の座標を取得する方法
私は OpenCV4Android バージョン 2.4.11 を使用しており、カメラによって取得されたフレームで長方形の形状を検出しています。下のimage_1に示すように、検出されたオブジェクトの周りに黒色の輪郭を描きます。私がやろうとしているのは、描かれた輪郭のすべての座標を黒でのみ描かれたものにすることです。私が試みたのは、以下のcode_1に示すように、最大の輪郭と最大の輪郭のインデックスを取得し、それぞれ「largestContour」と「largest_contour_index」に保存することです。次に、を使用して輪郭を描きます
次に、次のように黒で描かれた輪郭の特定の座標を見つけたいので、クラス FindCorners に最大の輪郭のポイントを渡します。
次のコード行:
小さい x 座標、最小の y 座標、最大の x 座標、および最大の y 座標が得られるはずです。しかし、「this.mFindCorners.getCords();」から取得した座標の周りに円を描くと、下の image_2 のようなものが得られました。これは BoundingRect の角にすぎません。
実際には、boundingRect からの座標は必要ありません。balck で検出されたオブジェクトの周りに描画される輪郭の座標にアクセスしたい
輪郭自体の座標を取得する方法を教えてください。
コード_1 :
FindCorners :
}
画像_1 :
画像_2 :
更新 私は境界四角形の座標を持ちたくありません。私が欲しいのは、黒い輪郭の正確な座標です。image_3に示すように、コードから取得している座標は、赤と黄色の円がある場所です..しかし、黒い線の「輪郭」の座標にアクセスできるように探しているので、に示すように円を描くことができます画像_3. 緑色のスポットは、座標を取得したい場所を示すためのものです。
画像_3 :
android - OpenCV FindContours は android で輪郭を検出しません
Xamarin を使用した Android ビルドで OpenCV を使用して、画像の輪郭を見つけようとしています (バージョンの詳細は以下を参照)。
以下のような疑似画像を使用している場合でも、FindCountours 関数で輪郭を返すことができません (リストは空です)。もう 1 つの問題は、階層オブジェクトに輪郭が 1 つあることです。
Windows で Python から実行すると機能します。
何が原因か誰か知っていますか?
バージョン情報:
- OpenCV-3.1.0
- Android 5.1 API 22
解決策が見つかりました: 等高線リストは JavaList でなければなりません。
c++ - 輪郭の歪み
ちょっと、画像モーメントで輪郭の向きを計算しました。その結果、-pi と pi の間で定義される角度が得られます。しかし、この角度は -pi と pi で不定です。だから私の考えは、3次画像モーメントで歪度を計算することでしたが、それを行う方法が本当にわかりません. ここでは、画像の瞬間を使用してオブジェクトの向きを追跡します。作成者は同じことを行います。しかし、彼/彼女は私が知らないmatlab関数を使用しているため、彼/彼女がどのように歪度を計算するのかよくわかりません:-/
誰かがその問題についてもっと知っていますか? 私はあなたの助けにとても感謝しています!!!! よろしくお願いします
python - drawContours が OpenCV 3.1.0 で正しいマスクを作成できない
Tesseract モデルをトレーニングするために、OpenCV を使用して Image の文字を分割したいと考えています。
私はバージョン3.1.0を使用しています (Macports のアップグレードのため - meh.. )。ドキュメント (Python 用) はまだあまり明確ではありません。
これが私がすることです:
- 輪郭を見つける準備をするために、イメージを 2 値化します。
- 輪郭を見つけます(これは機能します-少なくともゼロ以外の結果が得られます)
各輪郭について:
- マスクを作成します(これはおそらく失敗します - ゼロを取得します)
- マスクを使用して元の画像から部分を抽出します (動作するはずですが、マスクが失敗するため、これはまだ動作しません)
OpenCV の新しいバージョンの構文も多少異なるため、これによりさらに扱いにくくなる場合があります。
これが私のコードです:
私の知る限り、マスクは元の画像と同じサイズにする必要があります。しかし、それも同じ形にする必要がありますか?たとえば、私のイメージは 640x74 ですが、マスク マトリックスを作成する方法では、マスクは 1x47360 です。たぶんこれが失敗する理由です... (ただし、エラーはスローされません)
どんな助けでも大歓迎です!
python - SimpleCVまたはopencvで境界内のマークされた領域を計算する方法
私はこのイメージを持っています:
ここでは、緑色の背景に画像があり、その中に赤い線でマークされた領域があります。画像に対するマーク部分の面積を計算したい。
緑の背景を削除するために画像をトリミングし、トリミングされた画像の面積を計算しています。ここから、どう進めばいいのかわからない。
これにはContourを使用できることに気付きましたが、問題はこの場合にどのように輪郭を描くかです。
輪郭を作成し、マークされた領域を色で塗りつぶすことができれば、(トリミングされた) 画像全体からそれを差し引いて、両方の領域を取得できると思います。
opencv - エッジ(接続エッジ)の検出とエッジ長と接続コンポーネントの検索 回転半径
元の画像 この画像で接続された境界のクラスターを検出しようとしています。これらのエッジの長さと、個々のクラスターの回転半径を見つける必要があります。私はopencv 2.4.13を使用しています。次のコードを使用して、等高線を使用して質量クラスターを検出しました。
問題は、共通の共有エッジの輪郭が異なり、論理的には同じクラスターである必要があることです。私が与えている次の輪郭画像。 一定の長さ以上で抽出された輪郭
同じ共有エッジを持つ多くの輪郭が、異なる輪郭として別々に取得されていることがわかります。それらを同じ境界クラスターの一部として欲しい。また、境界の長さと回転半径を検出する方法を教えてください。助けてください。