资源简介

利用opencv自带的骨架提取函数,经优化后得到汉字图像的骨架图

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Tue Mar 20 10:53:50 2018

@author: Administrator
“““
import cv2 as cv
import numpy as np


def VThin(image array):
    h = image.shape[1]
    w = image.shape[0]
    NEXT = 1
    for i in range(399):
        for j in range(399):
            if NEXT == 0:
                NEXT = 1
            else:
                M = image[i j - 1] + image[i j] + image[i j + 1] if 0 < j < w - 1 else 1
                if image[i j] == 0 and 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 image[i - 1 + k j - 1 + l] == 255:
                                a[k * 3 + l] = 1
                    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
                    image[i j] = array[sum] * 255
                    if array[sum] == 1:
                        NEXT = 0
    return image


print(‘4‘)


def HThin(image array):
    h = image.shape[1]
    w = image.shape[0]
    NEXT = 1
    for j in range(399):
        for i in range(399):
            if NEXT == 0:
                NEXT = 1
            else:
                M = image[i - 1 j] + image[i j] + image[i + 1 j] if 0 < i < h - 1 else 1
                if image[i j] == 0 and 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 image[i - 1 + k j - 1 + l] == 255:
                                a[k * 3 + l] = 1
                    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
                    image[i j] = array[sum] * 255
  

评论

共有 条评论