# -*- coding: utf-8 -*-
"""Created on Thu Feb 1 15:52:05 2018@author: Administrator"""
from PIL import Image
import os
import time #命名时用
import string #字符串模块
import shutil #文件复制粘贴等操作模块
path=r'C:\Users\Administrator\Desktop\python之图像识别\2.验证吗识别相关\pic(字母加数字加边框)'
path_save=r'C:\Users\Administrator\Desktop\python之图像识别\2.验证吗识别相关\归类\\'
path_save2=r'C:\Users\Administrator\Desktop\python之图像识别\2.验证吗识别相关\cut\\'
path_makedir=r'C:\Users\Administrator\Desktop\python之图像识别\2.验证吗识别相关\分类_识别\\'
path_copy_from=r'C:\Users\Administrator\Desktop\python之图像识别\2.验证吗识别相关\归类'
#import pytesseract #利用著名hp的软件tesseract来进行简单的规则的文字识别
##上面都是导包,只需要下面这一行就能实现图片文字识别
#text=pytesseract.image_to_string(Image.open(r'C:\Users\Administrator\Desktop\python之图像识别\pic\123.jpg'),lang='eng')
#print(type(text))
################以下为自定义阈值的二值化函数##############
def get_bin_table(threshold): #threshold为阈值
"""获取灰度转二值的映射table:param threshold::return:"""
table = []
for i in range(256):
if i < threshold:
table.append(0)
else:
table.append(1)
return table
##########################################################
################以下为去噪函数(简单的删除点)::9邻域框,以当前点为中心的田字框,黑点个数##############
def sum_9_region(img, x, y): #为输入图片,xy分别为像素坐标,故使用其时需要用循环函数来厉遍图片里所有点
"""9邻域框,以当前点为中心的田字框,黑点个数:param x::param y::return:"""
# todo 判断图片的长宽度下限
cur_pixel = img.getpixel((x, y)) # 当前像素点的值
width = img.width
height = img.height
if cur_pixel == 1: # 如果当前点为白色区域,则不统计邻域值
return 0
if y == 0: # 第一行
if x == 0: # 左上顶点,4邻域
# 中心点旁边3个点
sum = cur_pixel \
+ img.getpixel((x, y + 1)) \
+ img.getpixel((x + 1, y)) \
+ img.getpixel((x + 1, y + 1))
return 4 - sum
elif x == width - 1: # 右上顶点
sum = cur_pixel \
+ img.getpixel((x, y + 1)) \
+ img.getpixel((x - 1, y)) \
+ img.getpixel((x - 1, y + 1))
return 4 - sum
else: # 最上非顶点,6邻域