問題タブ [opencv-drawcontour]

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.

0 投票する
1 に答える
503 参照

c++ - 検出された画像の描画輪郭のポイントを見つける方法は?

背景減算 、findcontour 、drawcontour などの操作を行った後、オブジェクトに描画される輪郭のポイントを見つけたいです。オブジェクトが動いているので、輪郭も適切ではありません。そして、オブジェクトに描かれている輪郭の最大点と最小点を見つけたいです。誰か見つけ方教えてくれませんか? 私のオブジェクトは移動中の車で、カメラ ビューは上です。

0 投票する
1 に答える
1152 参照

python - 輪郭のリストを作成しています

等高線 ( cnt) の (x,y) ポイントがあります。findContoursデータ構造を戻り値 ( )のデータ構造と比較すると、contoureほとんど同じように見えるリストが作成されました。 cntは 3D 配列のリストで、 は 3D 配列contoureのリストです。

次の結果が得られます。

「範囲外のタプルインデックス」を取得する理由がわかりません(これは 3D 配列np.size(contoure,1)であることに注意してください!) 。contoure[i]np.size(cnt,1)np.size(cnt) != np.size(contoure)

この違いのためにdrawContours が機能しないとcnt思いますが、なぜこれが起こるのかわかりません。

編集: 輪郭は findContours() 呼び出しによって作成されます。友人がコードのその部分をプログラムしたため、cnt がどのように作成されるか正確にはわかりません。結果は次の形式でしか得られません: all_cnt:

ここで、x1、y1 は最初の輪郭を表す n ペアです。次のコードを使用するよりも:

0 投票する
1 に答える
3447 参照

opencv - 大きな輪郭オブジェクトだけを描画すると、Python Opencv drawContours が失敗する

最大のオブジェクトの輪郭を描こうとしています。

最初に、すべての輪郭を描画する画像を示します。

すべての輪郭オブジェクト

最大のオブジェクトを見つけるために、次のコードを使用しました。

そして結果は次のとおりです。 最大のオブジェクトの輪郭

等高線が接続されていないのはなぜですか?

前もって感謝します。

0 投票する
1 に答える
4020 参照

python - 「関数 cvStartFindContours では、FindContours は 8uC1 および 32sC1 の画像のみをサポートしています」というエラーが表示される

ヒストグラム逆投影法やモルフォロジー フィルタリングなどの画像処理手法を実行しようとしていますが、処理された画像の輪郭を見つけようとすると、エラーが発生し続けます。

処理した画像を 8uC1 または 32sC1 に変換する方法をいくつか見つけようとしましたが、失敗しました。画像内の輪郭を見つけることができるように、画像をタイプ 8uC1 またはタイプ 32sC1 に変換する方法を誰か教えてもらえますか?

コード:

0 投票する
2 に答える
3661 参照

android - opencvを使用して画像から青色を検出しようとすると、予期しない結果が得られます

私はOpenCV4Androidが初めてです。これは、画像内の青色のブロブを検出するために書いたコードです。以下の画像のうち、画像 1 は私のラップトップにありました。アプリケーションを実行すると、OpenCV カメラによってキャプチャされたフレームが画像 2 になります。コードを見て、残りの画像が何であるかを確認できます。(コードでわかるように、すべての画像は SD カードに保存されます。)

次の質問があります。

  • カメラでキャプチャされた rgba フレームで水色のブロブの色が薄黄色になったのはなぜですか (画像 2 を参照)。

  • boundingRect私は最大の青色のブロブの周りに作成しましたROIが、その後rgbaFrame.submat(detectedBlobRoi). しかし、最後の画像を見るとわかるように、それはほんの数個の灰色のピクセルのように見えます. 青色の球体が画像の残りの部分から分離されていることを期待していました。

私は何が欠けているか、間違っていますか?

コード:

  1. コンピューターの元の画像。これは、携帯電話のカメラをノートパソコンの画面の前に置いてキャプチャしたものです。

ここに画像の説明を入力

  1. rgbaFrame.jpg

ここに画像の説明を入力

  1. hsvImage.jpg

ここに画像の説明を入力

  1. dilatedImage.jpg

ここに画像の説明を入力

  1. maskedMat.jpg

ここに画像の説明を入力

  1. 検出されたBlobRgba.jpg

ここに画像の説明を入力


編集:

を使用Core.inRange(hsvImage, new Scalar(0,50,40), new Scalar(10,255,255), maskedImage);//3, 217, 225 --- 6, 85.09, 88.24 ...... 3 219 255し、Web サイト colorizer.org のスクリーンショットをキャプチャしました。これには、赤色、つまり OpenCV の赤色のカスタム HSV 値をScalar(3, 217, 255)指定しました (これは、指定された関数で設定された範囲に収まりinRange、チャネル値をH=0-360、S=0-100、V=0-100 である colorizer.org のスケールは、H 値に 2 を掛け、S 値と V 値の両方を 255 で割り、100 を掛けることによって得られました。私6, 85.09, 88.24がウェブサイトで設定し、スクリーンショットを撮りました(次の画像の最初の画像)。

  1. 元のスクリーンショット、このフレームをキャプチャしました。

ここに画像の説明を入力

  1. rgbaFrame.jpg

ここに画像の説明を入力

  1. hsvImage.jpg

ここに画像の説明を入力

  1. maskedImage.jpg

ここに画像の説明を入力

  1. dilatedMat.jpg

ここに画像の説明を入力

  1. 検出されたBlobRgba.jpg

ここに画像の説明を入力


重要:

指定されたメソッドは、テスト アプリケーションで rgbaFrame 内に触れると実際に呼び出されます (つまり、onTouchメソッド内で呼び出されます)。また、次のコードを使用して、触れた色付きのブロブの 、 、および値を出力してTextViewHueますSaturationこのアプリケーションを実行すると、赤色のブロブに触れて、次の値が得られました: .ValueHue:3, Saturation:219, Value:255

public boolean onTouch(View v, MotionEvent motionEvent) { detectColoredBlob(); int cols = rgbaFrame.cols(); int 行 = rgbaFrame.rows();

}

0 投票する
1 に答える
272 参照

android - Which OpenCV4Android class does the field/constant CV_FILLED belongs to?

What OpenCV4Android class does the field CV_FILLED belong to? I couldn't find out from my Google search.

It is used as the value of the 5th argument to the Imgproc.drawContours() method. From the documentation:

thickness – Thickness of lines the contours are drawn with. If it is negative (for example, thickness=CV_FILLED ), the contour interiors are drawn.

I need to use it but in Android/Java, I can't use it just like that, I need to use the name of the class it belongs to with the dot operator, something like theClass.CV_FILLED. If I try to use just CV_FILLED, compiler complains, "CV_FILLED cannot be resolved to a variable".