2025年5月28日 星期三 乙巳(蛇)年 三月初一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 精彩资源

自制汉字字库,识别汉字(二)(字母篇)

时间:04-11来源:作者:点击数:12

识别a~z的字母(以宋体-常规-小五举例)

1、字母在显示屏的效果。

打开一个txt文件,选择“宋体-常规-小五”,“Print Screen”然后用画图板打开,放大到最大后可以看到下边的图片,

但是会发现字母并不是全部在5x8的矩阵内,比如“J、Q、g、j、p、q、y”都往下1~2个像素点。

通过截取汉字:,会发现汉字都是12X12显示的,返回去观察字母,会发现所有的字母、数字、字符等都是6X12显示的,正好是汉字的一半的。

截取数字和字母的部分得到374x12(单个字6x12)的子模:

2、生成6x12数字、字母子模(字典),数字篇有介绍生成子模的代码,修改传入参数即可。

  • if __name__ == "__main__":
  • img = Image.open("letter-1.png")
  • create_dic(img, 6,12, (0,0,0),"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")

得到一个6x12的数字、字母子模(字典)

  • gCH_dic = {
  • 581217714877742678016:"0",
  • 300046695948902990220:"1",
  • 631964266674202378756:"2",
  • 668818321662261657872:"3",
  • 23058496622323581508:"4",
  • 141903255292887096:"5",
  • 885587874446756020224:"6",
  • 668857768023141908928:"7",
  • 631955267446405873788:"8",
  • 276709042688530301508:"9",
  • 507285496670288101892:"A",
  • 145311190508126712:"B",
  • 595194640723092750336:"C",
  • 1176143240775895875824:"D",
  • 595061801289758295036:"E",
  • 74074116238992229372:"F",
  • 594907496798075495420:"G",
  • 590441121550286127884:"H",
  • 595194636312695029772:"I",
  • 1106821598908986163716:"J",
  • 226130310992358244868:"K",
  • 595049359774056432196:"L",
  • 442721892412573172238:"M",
  • 145311191582245276:"N",
  • 456720211177297248256:"O",
  • 595194636325512806912:"P",
  • 4612881745914627040:"Q",
  • 129379445294504592320:"R",
  • 1033017703602487427996:"S",
  • 144177037688979968:"T",
  • 890207440115331022848:"U",
  • 46140509855760269824:"V",
  • 78417806459972616248:"W",
  • 78426809810936889412:"X",
  • 1175981060599830626388:"Y",
  • 4681449620036:"Z",
  • 12953691510689858:"a",
  • 1175999079396453400576:"b",
  • 733259202829861523457:"c",
  • 735563919947829592084:"d",
  • 87641210116447911940:"e",
  • 34907297239269436:"f",
  • 78433569884376121348:"g",
  • 64582749230263697473:"h",
  • 79570727964579463224:"i",
  • 79587331209775530020:"j",
  • 73786976296516272212:"k",
  • 4406502506500:"l",
  • 73820753568062750724:"m",
  • 129148602265075187808:"n",
  • 129135096412384804972:"o",
  • 124534662797046779982:"p",
  • 110698478841908019300:"q",
  • }

3、通过子模,可以确定图片中6x12的矩阵区域内是否是数字、字母

用新的gCH_dic替换数字篇中gCH_dic相应代码。

然后main换成下方的代码即可识别图片中的字母。数字:

  • if __name__ == "__main__":
  • time1 = time.time()
  • img = Image.open("letter-digit.png")
  • imgdic = {}
  • for j in range(img.size[1]):
  • for i in range(img.size[0]):
  • imgdic[(i,j)] = img.getpixel((i, j))
  • print_img_num(imgdic, (img.size[0], img.size[1]), (6, 12), (0,0,0))
  • print time.time() - time1
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐