Advertisement
Guest User

Untitled

a guest
Jul 29th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.18 KB | None | 0 0
  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. import time
  4. from collections import Counter
  5. from Tkinter import *
  6. from PIL import ImageTk, Image
  7. import os, sys, glob, ntpath
  8. from os.path import relpath
  9.  
  10.  
  11. def create_database():
  12.     number_arr_ex = open('numArEx.txt', 'a')
  13.     numbers_we_have = range(0, 10)
  14.     versions_we_have = range(1, 10)
  15.     for eachNum in numbers_we_have:
  16.         for eachVer in versions_we_have:
  17.             img_file_path = 'images/numbers/'+str(eachNum)+'.'+str(eachVer)+'.jpg'
  18.             ei = Image.open(img_file_path)
  19.             eiar = np.array(ei)
  20.             eiar1 = str(eiar.tolist())
  21.             line_to_write = str(eachNum)+'::'+eiar1+'\n'
  22.             number_arr_ex.write(line_to_write)
  23.  
  24.  
  25. def tresh_from_img_np_array(img_arr):
  26.     balance_arr = []
  27.     new_arr = img_arr
  28.     for row in new_arr:
  29.         for pixel in row:
  30.             avg_num = pixel[0]/3+(pixel[1]/3)+(pixel[2]/3)
  31.             balance_arr.append(avg_num)
  32.     balance = reduce(lambda x, y: x+y, balance_arr)/len(balance_arr)
  33.     for row in new_arr:
  34.         for pixel in row:
  35.             temp = pixel[0] / 3 + (pixel[1] / 3) + (pixel[2] / 3)
  36.             if temp > balance:
  37.                 pixel[0] = 255
  38.                 pixel[1] = 255
  39.                 pixel[2] = 255
  40.             else:
  41.                 pixel[0] = 0
  42.                 pixel[1] = 0
  43.                 pixel[2] = 0
  44.     return new_arr
  45.  
  46.  
  47. def tresh_from_img(img):
  48.     imgarr = np.asarray(img)
  49.     imgarr.flags.writeable = True
  50.     balance_arr = []
  51.     new_arr = imgarr
  52.     for row in new_arr:
  53.         for pixel in row:
  54.             avg_num = pixel[0]/3+(pixel[1]/3)+(pixel[2]/3)
  55.             balance_arr.append(avg_num)
  56.     balance = reduce(lambda x, y: x+y, balance_arr)/len(balance_arr)
  57.     for row in new_arr:
  58.         for pixel in row:
  59.             temp = pixel[0] / 3 + (pixel[1] / 3) + (pixel[2] / 3)
  60.             if temp > balance:
  61.                 pixel[0] = 255
  62.                 pixel[1] = 255
  63.                 pixel[2] = 255
  64.             else:
  65.                 pixel[0] = 0
  66.                 pixel[1] = 0
  67.                 pixel[2] = 0
  68.     image = Image.fromarray(new_arr)
  69.     return image
  70.  
  71.  
  72. def tresh_from_img_path(path):
  73.     img = Image.open(path)
  74.     to_arr = np.asarray(img)
  75.     to_arr.flags.writeable = True
  76.     balance_arr = []
  77.     new_arr = to_arr
  78.     for row in new_arr:
  79.         for pixel in row:
  80.             avg_num = pixel[0]/3+(pixel[1]/3)+(pixel[2]/3)
  81.             balance_arr.append(avg_num)
  82.     balance = reduce(lambda x, y: x + y, balance_arr)/len(balance_arr)
  83.     for row in new_arr:
  84.         for pixel in row:
  85.             temp = pixel[0] / 3 + (pixel[1] / 3) + (pixel[2] / 3)
  86.             if temp > balance:
  87.                 pixel[0] = 255
  88.                 pixel[1] = 255
  89.                 pixel[2] = 255
  90.             else:
  91.                 pixel[0] = 0
  92.                 pixel[1] = 0
  93.                 pixel[2] = 0
  94.     image = Image.fromarray(new_arr)
  95.     return image
  96.  
  97.  
  98. def what_num(my_file):
  99.     matched_black = []
  100.     max_matched_one_pic = []
  101.     miss_match = []
  102.     load_ex = open('numArEx.txt','r').read()
  103.     load_ex = load_ex.split('\n')
  104.     iar = my_file
  105.     iar1 = iar.tolist()
  106.     in_qst = str(iar1)
  107.     in_qst = in_qst.split('],')
  108.     i = 0
  109.     for eachEx in load_ex:
  110.         if len(eachEx) > 3:
  111.             split_ex = eachEx.split('::')
  112.             current_num = split_ex[0]
  113.             current_ar = split_ex[1]
  114.             each_pix_ex = current_ar.split('],')
  115.             x = 0
  116.             matched_one_pic = []
  117.             while x < len(each_pix_ex):
  118.                 if each_pix_ex[x] == in_qst[x]:
  119.                     matched_one_pic.append(int(current_num))
  120.                     matched_black.append(int(current_num))
  121.                     if len(matched_one_pic) > len(max_matched_one_pic):
  122.                         max_matched_one_pic = matched_one_pic
  123.                 else:
  124.                     miss_match.append(int(current_num))
  125.                 x += 1
  126.         i += 1
  127.     x = Counter(matched_black)
  128.     print matched_black
  129.     print x
  130.     for number, count in x.most_common(1):
  131.         print "Your number is "+str(number)
  132.         print "Most accurate number was "+str(max_matched_one_pic[0])
  133.  
  134. ### grafikai ###
  135.     # graphX = []
  136.     # graphY = []
  137.     # for each in x:
  138.     #     graphX.append(each)
  139.     #     graphY.append(x[each])
  140.     # fig = plt.figure()
  141.     # ax1 = plt.subplot2grid((4,4),(0,0),rowspan = 1, colspan=4)
  142.     # ax2 = plt.subplot2grid((4,4),(1,0),rowspan = 3, colspan=4)
  143.     # ax1.imshow(iar)
  144.     # ax2.bar(graphX,graphY,align='center')
  145.  
  146.     #plt.ylim(400)
  147.    # xloc = plt.MaxNLocator(12)
  148.     #ax2.xaxis.set_major_locator(xloc)
  149.    # plt.show()
  150.     #
  151.     # fig = plt.figure()
  152.     # ax1 = plt.subplot2grid((4,3),(0,0),rowspan=12,colspan=9)
  153.     # ax1.imshow(iar)
  154.     # plt.show()
  155.  
  156. # for i in range(0,10):
  157. #     for j in range(1,10):
  158. #         print i,j
  159. #         pic = Image.open("images/numbers/"+str(i)+"."+str(j)+".png")
  160.  
  161. # -------------------------------------------------------
  162.  
  163. # path = "/Users/erlandas_t/PycharmProjects/untitled5/images/numbers"
  164. # dirs = os.listdir(path)
  165. # print len(dirs)
  166. # for fil in dirs:
  167. #     print "images/numbers/"+fil
  168. #     pic = Image.open("images/numbers/"+fil)
  169. #     iar = np.asarray(pic)
  170. #     iar.flags.writeable = True
  171. #     print "aa"
  172. #     what_num(tresh(iar))
  173. # -------------------------------------
  174.  
  175.  
  176. def crop_white_edges(img):
  177.     print
  178. # -------------------------------------
  179.  
  180.  
  181. def convert_to_jpg(img, path):
  182.     head, tail = ntpath.split(path)
  183.     img.save("images/jpg/" + tail[:-4] + ".jpg", format='JPEG', subsampling=0, quality=100)
  184.  
  185.  
  186. def convert_dir_cont_to_jpg(dir_path):
  187.     dirs = os.listdir(dir_path)
  188.     print len(dirs)
  189.     for fil in dirs:
  190.         img = tresh_from_img_path(dir_path+fil)
  191.         convert_to_jpg(img, dir_path+fil)
  192.  
  193.  
  194. def main():
  195.     path = "/Users/erlandas_t/PycharmProjects/untitled5/images/numbers/"
  196.     convert_dir_cont_to_jpg(path)
  197.     create_database()
  198.  
  199.  
  200. # root = Tk()
  201. # img = ImageTk.PhotoImage(Image.open("images/test.png"))
  202. # panel = Label(root, image=img)
  203. # panel.pack(side="bottom", fill="both", expand="yes")
  204. # root.mainloop()
  205. if __name__ == "__main__":
  206.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement