from PIL import Image
from numpy import *
import operator
def out_p(filename):
im=Image.open("E:/test/pic/"+filename+".bmp")
f=open("E:/test/text/"+filename+".txt","a",encoding='utf-8')
w=im.size[0]
h=im.size[1]
#print(w,h)
for i in range(0,w):
for j in range(0,h):
cl=cl=im.getpixel((j,i))
clall=cl[0]+cl[1]+cl[2]
if(clall==0):
f.write('1')
else:
f.write('0')
f.write("\n")
f.close()
def train():
for k in range(0,4):
for l in range(0,10):
filename=str(k)+'_'+str(l)
out_p(filename)
print("输出完毕")
train()
以上代码为把0-3的数字测试图片转化为文本
from os import listdir
import numpy as np
from PIL import Image
from numpy import *
import operator
def out_p(filename):
im=Image.open("E:/test/pic/"+filename+".bmp")
f=open("E:/test/text/"+filename+".txt","a",encoding='utf-8')
w=im.size[0]
h=im.size[1]
#print(w,h)
for i in range(0,w):
for j in range(0,h):
cl=cl=im.getpixel((j,i))
clall=cl[0]+cl[1]+cl[2]
if(clall==0):
f.write('1')
else:
f.write('0')
f.write("\n")
f.close()
def knn(k,testdata,traindata,labels):
l=[]
size=traindata.shape[0]
temp=tile(testdata,(size,1))-traindata
temp=temp**2
mtemp=temp.sum(axis=1)
d=mtemp**0.5
sort=d.argsort()
print(sort)
for i in range(0,k):
l.append(labels[sort[i]])
vote=max(set(l), key=l.count)
#su=dd.argsort()
#print(su[0],su[1],su[2])
return vote
def datatoarray(fname):
arr=[]
f=open("E:/test/text/"+fname,"r",encoding="utf-8")
for i in range(0,120):
thisline=f.readline()
for j in range(0,120):
arr.append(int(thisline[j]))
return arr
#print(datatoarray('1_3.txt'))
def tr():
trainfile=listdir("E:/test/text/")
num=len(trainfile)
trainarr=zeros((num,14400))
l=[]
for i in range(0,num):
trainarr[i]=datatoarray(trainfile[i])
l.append(int(trainfile[i][0]))
return trainarr,l
traindata,labels=tr()
filename='tt'
out_p(filename)
testdata=datatoarray(filename+'.txt')
print(knn(3,testdata,traindata,labels))