0
所以我有這樣的地圖: 近似多邊形
最後,我想找到圖像中每個多邊形的座標,但是使用find_contours函數並沒有給出好的結果,如下圖所示。
在左側,您可以看到找到的所有輪廓(多邊形)(每種顏色),在右側,它是找到的多邊形的一個示例(顯然是錯誤的)。
有了黑白圖像,我怎麼找到每個多邊形的座標呢?
所以我有這樣的地圖: 近似多邊形
最後,我想找到圖像中每個多邊形的座標,但是使用find_contours函數並沒有給出好的結果,如下圖所示。
在左側,您可以看到找到的所有輪廓(多邊形)(每種顏色),在右側,它是找到的多邊形的一個示例(顯然是錯誤的)。
有了黑白圖像,我怎麼找到每個多邊形的座標呢?
所以當我下載圖像時,我得到了一個非常不相交的圖像。所以我做的是我擴大了它。
import numpy as np
from skimage import io, measure, morphology
img = io.imread('img.png', as_grey=True)
img = morphology.binary_dilation(img, selem=np.ones((5,5)))
那麼我所做的就是我倒有黑色白線和區域爲白色與此
img_inverted = np.invert(img)
一旦你的倒影,它貼上標籤,便於處理。
img_inverted_labeled = measure.label(img_inverted)
n_lbls = np.unique(img_inverted_labeled)[1:]
現在追加每個零件的多邊形。
pols = []
for i in n_lbls:
img_part = (img_inverted_labeled == i)
pols.append(measure.find_contours(img_part, level=0)[0])
希望這會有所幫助。
那麼相鄰的多邊形將會在邊界上共享點? – Miki
分享要點並非嚴格必要。它的確定,如果他們只是足夠接近 – Ivan
我知道你不使用的OpenCV(但可能是一些功能在一些Python包中實現。)看一看[這裏](http://docs.opencv.org/master/ D3/DB4/tutorial_py_watershed.html#gsc.tab = 0)。您可以使用分水嶺查找所有封閉區域,然後可以分別找到每個區域的輪廓。 – Miki