的兩個部分我有那種圖像獨立的圖像作爲在python
如圖所示的圖像,圖像主要有兩個部分。 上下。
我想分開它們。
在第一次嘗試中,我實現了使用K-meas算法。
In[2]: kmeans = KMeans(n_clusters=2, random_state=0).fit(... np.asarray(np.where(finalImage == 255)).T)
正是在此搜索案例工程是上下有圓點的幾乎相同。但是,是不是工作在影像2
後比我用cv2.findContours以獲得最大的區域2個輪廓
im, contours, hierarchy = cv2.findContours(Img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# get first contour
maxContour = 0
for contour in contours:
contourSize = cv2.contourArea(contour)
if contourSize > maxContour:
maxContour = contourSize
maxContourData0 = contour
# get second contour
if contours.__len__() != 1:
maxContour = 0
for contour in contours:
contourSize = cv2.contourArea(contour)
if contourSize > maxContour and np.sum(np.subtract(contour[0:5],maxContourData0[0:5])) != 0:
maxContour = contourSize
maxContourData1 = contour
mask = np.zeros_like(Img)
cv2.fillPoly(mask, [maxContourData0], 1)
if contours.__len__() != 1:
cv2.fillPoly(mask, [maxContourData1], 1)
finalImage = np.zeros_like(Img)
finalImage[:, :] = np.multiply(Img, mask)
cv2.imshow('final', finalImage)
cv2.waitKey(0)
但有時去一個輪廓不是2 ...
強制性地有沒有得到兩個blob ?
如果斑點的實際尺寸並不重要,但只有相對大小,你可以嘗試在提取斑點之前應用腐蝕,它可能有助於消除兩個斑點之間的連接。 – Mathias