-1

我有一個輪子的骨架圖像,繪製2,4或6個直徑。 我也有分支點座標。如何檢測鏤空圖像中圓的數量?

我想檢測不同車輪約2種方式:

  1. 計數圈內黑色區域
  2. 計數直徑繪製

在這兩種情況下,我不知道我怎麼能實現他們。

wheel 1 wheel 2 wheel 3 wheel 4 wheel 5

正如你所看到的,車輪是不完美的骨架,所以這是很難檢測的差異。

這是我使用爲骨架的代碼:

第一所有的i值化圖像的,我擴張然後縮略。

from skimage import io 
import scipy 
from skimage import morphology 
import cv2 
from scipy import ndimage as nd 
import mahotas as mah 
import pymorph as pm 
import pymorph 

complete_path = "wheel1.jpg" 
gray = cv2.imread(complete_path,0) 
print(gray.shape) 
cv2.imshow('graybin',gray) 
cv2.waitKey() 

ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV) 
imgbnbin = thresh 
print("shape imgbnbin") 
print(imgbnbin.shape) 
cv2.imshow('binaria',imgbnbin) 
cv2.waitKey() 

element = cv2.getStructuringElement(cv2.MORPH_CROSS,(6,6)) 
graydilate = cv2.dilate(imgbnbin, element) #imgbnbin 
graydilate = cv2.dilate(graydilate, element) 
#graydilate = cv2.erode(graydilate, element) 

cv2.imshow('dilate',graydilate) 
cv2.waitKey() 

#SKELETONIZE 
out = morphology.skeletonize(graydilate>0) 
skel = out.astype(float) 
cv2.imshow('scikitimage',skel) 
cv2.waitKey() 
io.imsave('wheel.jpg', skel)  
sk = skel 
print(sk.shape) 

原始圖片:

wheel 1 wheel 2 wheel 3 wheel 4 wheel 5

+0

我解決了,w ith一個更好的骷髏(scikit形象是好的,但也mahotas圖書館)和檢索每個圖像的輪廓,我可以計算黑色區域,並認出一個2,4或6直徑的輪子! – improc

回答

0

您也可以應用擴張連接線幾乎接觸並使用flood fill算法來識別車廂