迭代次数200,运行次数可能需要五分钟,耐心等待
#! /usr/bin/env python3
# -*- coding:utf-8 -*-
import cv2
import copy
#原理就是使图像左右方向越来越“瘦”
def v_thin(img):
h, w = img.shape
i_next = 1
for i in range(h):
for j in range(w):
if i_next == 0:
i_next = 1
else:
i_m = int(img[i, j - 1]) + int(img[i, j]) + int(img[i, j + 1]) if 0 < j < w - 1 else 1
if img[i, j] == 0 and i_m != 0:
a = [0] * 9
for k in range(3):
for l in range(3):
if -1 < (i - 1 + k) < h and -1 < (j - 1 + l) < w and img[i - 1 + k, j - 1 + l] == 255:
a[k * 3 + l] = 1
i_sum = a[0] * 1 + a[1] * 2 + a[2] * 4 + a[3] * 8 + a[5] * 16 + a[6] * 32 + a[7] * 64 + a[8] * 128
img[i, j] = l_array[i_sum] * 255
if l_array[i_sum] == 1:
i_next = 0
def xi_hua(img, num=315):#迭代次数,自行设置,决定了处理结果有多“瘦”
for i in range(num):
v_thin(img)
return img
l_array = [0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,
1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,
1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,
1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,
1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,
1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0,
1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0]
def to_binary(img):
w, h = img.shape
i_two = copy.deepcopy(img)
for i in range(w):
for j in range(h):
if img[i, j] < 200:
i_two[i, j] = 0
else:
i_two[i, j] = 255
return i_two
if __name__ == '__main__':
image = cv2.imread("./A2-2.png", 0)#读取你自己的图
img_binary = to_binary(image)
#cv2.imshow("image", image)#显示原图
#cv2.imshow("img_binary", img_binary)#显示二值图
img_thin = xi_hua(img_binary)
#cv2.imshow("img_thin", img_thin)#显示结果
cv2.imwrite("thin315A2.png",img_thin)#保存结果
#cv2.waitKey(0)
亲测可用,有问题评论区
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)