Я предполагаю, что вы основали свой код на проекте здесь
Трудно точно сказать, что сломалось, поскольку у меня нет доступа к файлам JPEG, которые выиспользуется (исходный проект использует файлы PNG).
Однако следующая версия вашего кода работает с файлами PNG, предоставленными в проекте GitHub, которые хранятся в той же структуре каталогов, которую вы видите там (на изображениях/ цифры).Я удалил функцию threshold()
, так как она не вызывалась.
Надеюсь, вы сможете использовать ее в качестве отправной точки для работы.
from PIL import Image
from matplotlib import pyplot as plt
import numpy as np
import time
from collections import Counter
def createExamples():
numberArrayExamples=open('numArEx.txt','w') # replace, do not append
numbersWeHave=range(1,3)
versionsWeHave=range(1,10)
for eachNum in numbersWeHave:
for eachVer in versionsWeHave:
#print str(eachNum)+'.'+str(eachVer)
imgFilePath = 'images/numbers/'+str(eachNum)+'.'+str(eachVer)+'.png'
ei=Image.open(open(imgFilePath,'rb'))
eiar=np.array(ei)
eiar1=str(eiar.tolist())
lineToWrite=str(eachNum)+'::'+eiar1+'\n'
numberArrayExamples.write(lineToWrite)
numberArrayExamples.close()
def whatNumIsThis(filePath):
matchedAr=[]
loadExamps=open('numArEx.txt','r').read()
loadExamps=loadExamps.split('\n')
i=Image.open(open(filePath,'rb'))
iar=np.array(i)
iar1=iar.tolist()
inQuestion=str(iar1)
for eachExample in loadExamps:
if len(eachExample) > 3:
splitEx=eachExample.split('::')
currentNum=splitEx[0]
currentAr=splitEx[1]
eachPixEx = currentAr.split(']')
eachPixInQ=inQuestion.split(']')
x = 0
while x<len(eachPixEx):
if eachPixEx[x]==eachPixInQ[x]:
matchedAr.append(int(currentNum))
x+=1
print (matchedAr)
x=Counter(matchedAr)
print (x)
createExamples()
whatNumIsThis('images/test.png')
whatNumIsThis('images/test1.png')