骨架化過程產生的圖像大致代表了形狀的骨架,但它不是輪廓。如何將骨架轉換爲輪廓?如何將曲線擬合成鏤空圖像?
使用下面的OpenCV/Python代碼就可以通過骨架化過程中的以下's.png的形象上獲得:
import numpy as np
import cv2, cv
img = cv2.imread("s.png",0)
size = np.size(img)
skel = np.zeros(img.shape,np.uint8)
ret,img = cv2.threshold(img,127,255,0)
element = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3))
done = False
img =cv2.bitwise_not(img)
original = img
while(not done):
eroded = cv2.erode(img,element)
temp = cv2.dilate(eroded,element)
temp = cv2.subtract(img,temp)
skel = cv2.bitwise_or(skel,temp)
img = eroded.copy()
zeros = size - cv2.countNonZero(img)
if zeros==size:
done = True
cv2.imshow("original", original)
cv2.imshow("skeleton",skel)
cv2.imshow("dilate-skeleton",cv2.dilate(skel, element))