2016-11-19 8 views
1

私はpythonを使ってopencvを使っていて、画像の輪郭の形状を取得しようとしています。 正方形、長方形、円形、三角形などの通常の形状のみを考慮すると、numpycv2ライブラリのみを使用して輪郭形状を得る方法はありますか?輪郭と色の形を内部で検出する

また、輪郭の中の色を探したいと思います。どうしたらいいですか?

輪郭の領域を見つけるには、組み込み関数cv2.contourArea(cnt)があります。 "輪郭形状"と "輪郭内部の色"の組み込み関数もありますか? 助けてください!

注:私が検討している画像には、複数の通常の図形が含まれています。

+0

イメージの形状を特定する部分があります。 誰でも輪郭内の色の識別を手伝うことができます。 注:すべての輪郭内の色は単色で多色ではありません つまり、1つの輪郭では赤、青、緑、黄のうちの1つだけです –

+0

「輪郭内の輪郭」に関しては、 'findContours'には、の輪郭が見つかりました。 OpenCVにはこの使い方に関する[チュートリアル](http://docs.opencv.org/trunk/d9/d8b/tutorial_py_contours_hierarchy.html)があります。 –

+0

@ダンあなたは輪郭として色を誤解しました。私は実際に輪郭の中の色を検出する方法を知りたがっていました。 –

答えて

1

この方法はもっと長くなるかもしれませんが、今は頭の上にあります。輪郭形状を見つけるには、関数findcontoursを使用して、点のベクトルを出力(輪郭の境界点)に与えます。今、モーメントを使って輪郭の中心を見つけましょう。輪郭使用を求める

この

cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]]) 

画像は、キャニー出力画像である機能します - 。

モーメントから計算センターは、このリンクに輪郭中心から今中心からの点の距離を比較することにより、形状分類し に記憶された各点の http://docs.opencv.org/trunk/dd/d49/tutorial_py_contour_features.html

計算距離を参照

1) - すべての輪郭点は、中心からほぼ等距離になります。

2)正方形、長方形 e-中心から最も離れた4点を見つけます。これらの点は頂点になり、ほぼ同じ距離になります。あなたが唯一の4形状

を持っているので、あなただけの発見のために、ここではそれ以外の条件を使用することができますので、これは三角形の異なるタイプの、トリッキーなことができます - 今すぐ)エッジ長

3を使用して矩形からtrainglesを四角を区別色を使用するには、四角形、四角形、三角形の頂点を使用してマスクを作成します。

あなたは単一の色しか持っていないので、中央付近に小さなパッチを作成してそこでRGBピクセルの平均値を取得します。 中心が(100,100)で、半径が20ピクセルの円があるとします。このパッチのR、G、B値の平均値を(100,100)に設定して10 x 10と言うサイズのパッチを作成します。ブルーR〜0 G〜0及びB〜255

緑R〜0 G〜255のための赤色R〜25​​5 G〜0及びB〜0

ため

及びB〜0

注:opencvはRGBではなくBGRとして値を格納します

+0

アイデアをありがとう。私はこのすべてに慣れていないので少し詳しく説明できますか?私は関数の使い方について正しく知らない。前もって感謝します。 –

+0

私はopencv C++を使用しています。あなたは自分自身でpythonを理解しなければなりません –

0

特定の輪郭の形状を見つけるために、輪郭の周りに境界のある矩形を描くことができます。 これで、輪郭の面積と境界のある矩形の面積を比較できます。 輪郭の面積が境界付き矩形の面積の半分に等しい場合、その形状は三角形です。 輪郭の領域が制限された矩形の領域よりも小さいが、制限された矩形の領域の半分よりも大きい場合は、その領域の円です。

注:この方法は、正三角形と円形に限定されています。これは六角形、七角形などのポリゴンには当てはまりません。