有没有人有一个如何在C#中使用OpenCV进行骨架化的例子。
谢谢
答案 0 :(得分:2)
对不起,我没有C#的例子。但我可以使用OpenCV-Python为您提供一种方法。它使用基本的OpenCV函数完成,因此我使用的所有函数也应该在C#中可用。
import cv2
import numpy as np
img = cv2.imread('img.png',0)
size = np.size(img)
skeleton = np.zeros(img.shape,np.uint8)
ret,img = cv2.threshold(img,127,255,0)
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
finished = False
while(not finished):
eroded = cv2.erode(img,kernel)
temp = cv2.dilate(eroded,kernel)
temp = cv2.subtract(img,temp)
skel = cv2.bitwise_or(skeleton,temp)
img = eroded.copy()
zeros = size - cv2.countNonZero(img)
if zeros==size:
finished = True
cv2.imshow("skeleton",skeleton)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果如下:
方法不太好,所以结果也不完美。但更好,我希望。
EmguCV文档:http://www.emgu.com/wiki/files/2.3.0/document/Index.html
我相信所有功能都可以在那里使用。所以要自己实现。
答案 1 :(得分:1)
看一下这篇文章:OpenCV - Morphological Skeleton