汉字图片二值化提取

问题描述: 将汉字图片二值化,使汉字和背景分离
在这里插入图片描述

import cv2
import matplotlib.pylab as plt
import numpy as np
%matplotlib inline
# # imread
# img = cv2.imdecode(np.fromfile(u'x:/中文路径/xx.jpg', dtype=np.uint8), flags)  #flags=cv2.IMREAD_COLOR...
# #imwrite
# cv2.imencode('.jpg', img)[1].tofile(u'x:/中文路径/xx.jpg')
img_paths = [...]
imgs = []
for ipath in img_paths:
    imgs.append(cv2.imdecode(np.fromfile(ipath, dtype=np.uint8),cv2.IMREAD_GRAYSCALE))
for o_img in imgs:  
    img = threshold(o_img)

用到的二值化函数:

def isBlackChar(img):
    return np.sum(img>100) > np.sum(img<100)

def threshold(o_img):
    length = np.min(o_img.shape)
    length = length if length%2==1 else length-1
    img = o_img
    # 中值滤波
    img = cv2.blur(img,(3,3))
    img = cv2.medianBlur(img,7)
    # 均值滤波
    img = cv2.blur(img,(3,3))
    img = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,length,2)
    img = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,length,2)
    
    if(not isBlackChar(img)):
        img = 255-img
    return img



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值