2016-11-19 156 views
1

我是新來opencv使用python並試圖獲取圖像中輪廓的形狀。 考慮只有像正方形,矩形,圓形和三角形的規則形狀有沒有辦法使用numpycv2庫來獲得輪廓形狀?檢測輪廓和內部顏色的形狀

另外我想找到輪廓內的顏色。我該怎麼做?

爲了找到輪廓區域,有一個內置功能:cv2.contourArea(cnt)。 「輪廓形狀」和「輪廓內顏色」是否還有內置功能? 請幫忙!

注意:我正在考慮的圖像包含多個常規形狀。

+0

我得到了識別圖像中形狀的部分。 任何人都可以幫助我識別輪廓內的顏色。 注意:所有輪廓中的顏色都是單色的而不是多色的 即在一個輪廓中,它只是紅色,藍色,綠色和黃色中的一個 –

+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個點,這些點將是頂點並且將具有大致相同的距離。現在,使用邊長

3)traingles區分矩形廣場 - 這可能會非常棘手,針對不同類型的三角形,所以你可以用其他條件在這裏,因爲你只有4形狀

爲了找到顏色,使用正方形,矩形和三角形的頂點創建一個蒙版。

由於您只有單一顏色,因此您可以在中心附近製作一個小補丁並獲取RGB像素的平均值。 假設您的中心位於(100,100)及其半徑爲20像素的圓。創建大小爲10 X 10的補丁,中心爲(100,100),並在此補丁中找到R,G和B值的平均值。

爲紅色R〜25​​5 G〜0和B〜0

綠色R〜0 G〜255和B〜0

用於藍色R〜0 G〜0和B〜255

注意:opencv將值存儲爲BGR,而不是RGB

+0

謝謝你的想法。你能否詳細解釋一下,因爲我是新手。我不知道如何使用這些功能。提前致謝。 –

+0

我使用opencv C++,你必須自己弄清python –

0

爲了找到特定輪廓的形狀,我們可以在輪廓周圍繪製一個有界的矩形。 現在我們可以比較輪廓的面積和有界矩形的面積。 如果輪廓區域等於有界矩形區域的一半,則該形狀爲三角形。 如果輪廓的面積小於有界矩形的面積,但大於有界矩形的面積的一半,那麼它就是一個圓。

注意:此方法僅限於正三角形和圓形。這並不適用於像六邊形,七邊形等多邊形。