|
|
from PIL import Image import numpy as np import matplotlib.pyplot as plt import time from collections import Counter import operator
def createExamples(): numberArrayExamples = open('numArEx.txt', 'a') numbersWeHave = range(1,10) 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(imgFilePath) eiar = np.array(ei) eiar1 = str(eiar.tolist())
lineToWrite = str(eachNum) + '::' + eiar1 + '\n' numberArrayExamples.write(lineToWrite)
def threshold(imageArray): balanceAr = [] newAr = imageArray
for eachRow in imageArray: for eachPix in eachRow: avgNum = reduce(lambda x, y: x+y, eachPix[:3])/len(eachPix[:3]) balanceAr.append(avgNum)
balance = reduce(lambda x, y: x + y, balanceAr)/len(balanceAr) for eachRow in newAr: for eachPix in eachRow: if reduce(lambda x, y: x+y, eachPix[:3])/len(eachPix[:3]) > balance: eachPix[0] = 255 eachPix[1] = 255 eachPix[2] = 255 eachPix[3] = 255 else: eachPix[0] = 0 eachPix[1] = 0 eachPix[2] = 0 eachPix[3] = 255 return newAr
def whatNumIsThis(filePath): matchedAr = [] loadExamps = open('numArEx.txt', 'r').read() loadExamps = loadExamps.split('\n')
i = Image.open(filePath) iar = np.array(i) iarl = iar.tolist()
inQuestion = str(iarl) 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 numb = max(x.iteritems(), key=operator.itemgetter(1))[0] #print numb return numb, x
n, counts = whatNumIsThis('images/test.png') print n print counts
|