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