有没有人有一个如何在 C# 中使用 OpenCV 进行骨架化的示例。
谢谢你
对不起,我没有 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
我确信所有功能都将在那里可用。所以自己实施。