使用OpenCV库计算形态骨架。获得的骨架并不完美,但与其他现有算法相比,这是一种非常简单的方法。仅使用两个基本的形态学运算来计算形态骨架:扩张和侵蚀。在伪代码中,该算法的工作方式如下:
img = ...;
while (not_empty(img))
{
skel = skel | (img & !open(img));
img = erosion(img);
}
在每次迭代中,图像都会再次受到侵蚀,并通过计算当前侵蚀的并集减去侵蚀的开始程度来精炼骨架。
c#代码如下:
//c#的方法
private void Button37_Click(object sender, EventArgs e)
{
Mat img = Cv2.ImRead("C:\\Users\\zyh\\Desktop\\QQ图片20200923202643.png", 0);
Cv2.Threshold(img, img, 127, 255, ThresholdTypes.Binary);
Mat skel = new Mat(img.Size(), MatType.CV_8UC1, Scalar.All(0));
Mat temp = new Mat(img.Size(), MatType.CV_8UC1);
Mat element = Cv2.GetStructuringElement