0

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

谢谢你

4

1 回答 1

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

我确信所有功能都将在那里可用。所以自己实施。

于 2012-05-12T15:40:16.427 回答