在c#中使用OpenCV进行骨架化

时间:2012-05-12 12:55:06

标签: c# opencv

有没有人有一个如何在C#中使用OpenCV进行骨架化的例子。

谢谢

2 个答案:

答案 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()

结果如下:

enter image description here enter image description here

方法不太好,所以结果也不完美。但更好,我希望。

EmguCV文档:http://www.emgu.com/wiki/files/2.3.0/document/Index.html

我相信所有功能都可以在那里使用。所以要自己实现。

答案 1 :(得分:1)

看一下这篇文章:OpenCV - Morphological Skeleton