2012-08-11 68 views
4

請解釋一下如何識別不完全相互分離的方形輪廓。例如,我需要確定下圖中的正方形數量及其邊緣的x,y座標。我試圖通過this的問題,但它不適合我。如何識別不直接相互分離的輪廓?

enter image description here

所以請可以有人解釋這種使用簡單的代碼示例。

這是我可以生成的圖像,請你解釋一下如何在圖像中識別上面的方塊。

enter image description here

所以請善待足以說明這一點。

回答

5

您必須使用事實,即每個正方形的紅色分量等於255,並執行閾值。下面是我做了什麼:

  1. 做一個紅顏色分割: enter image description here

  2. 做擴張(除去孔): enter image description here

  3. (可選)做一個檢查,如果每個輪廓是一個正方形。

代碼:

Mat src = imread("input.png"), red; 
extractChannel(src, red, 2); 

threshold(red, red, 254, 255, THRESH_BINARY); 

Mat element = getStructuringElement(MORPH_RECT, Size(2, 2), Point(1, 1)); 
dilate(red, red, element); 
+0

乾草非常感謝您的快速回復。你能告訴我,如果那些方塊像其他線一樣具有相同的顏色,我怎麼能提取這些方塊?請善待解釋這一點。 – NadLnk 2012-08-12 04:53:24

+0

我不明白你的問題。 – ArtemStorozhuk 2012-08-12 14:30:44

+0

我的意思是如果整個圖像只有黑色線條,我怎麼能識別這些方塊? – NadLnk 2012-08-12 15:21:44