python
1import numpy as np 2from PIL import Image 3 4from google.colab import drive 5drive.mount('/content/drive') 6 7img = [np.array(Image.open('drive/My Drive/〇.png'))] 8 9for i in range(1): 10 img[i] = 255 - img[i] 11 img[i] = (img[i] > 128) * 255 12 img[i].resize((144 , 132)) 13 14np.set_printoptions(threshold=19000) 15 16# 取得したインデックスをa[]配列に順に入力していく。 17a = [ np.nonzero(img)[2][i] for i in range(len(np.nonzero(img)[2])) if i == 0 or np.nonzero(img)[2][i] < np.nonzero(img)[2][i-1]] 18 19# 計算処理(縦方向51pxであると仮定) 20print((a[9]-a[1])/2) 21print((a[35]-a[27])/2) 22 23print(a[9]) 24print(a[27]) 25 26if -2 <= (a[9] - a[1])/2 <= 2 and 2 <= (a[35] - a[27])/2 <= 6 and -2 <= a[9] <= 2 and -2 <= a[27] <= 2: 27 answer = "0" 28elif 8 <= (a[9] - a[1])/2 <= 12 and 14 <= (a[35] - a[27])/2 <= 18 and 18 <= a[9] <= 22 and 14 <= a[27] <= 18: 29 answer = "1" 30elif -2 <= (a[9] - a[1])/2 <= 2 and 2.5 <= (a[35] - a[27])/2 <= 6.5 and -2 <= a[9] <= 2 and 10 <= a[27] <= 14: 31 answer = "2" 32elif -2 <= (a[9] - a[1])/2 <= 2 and 38.5 <= (a[35] - a[27])/2 <= 42.5 and -2 <= a[9] <= 2 and -2 <= a[27] <= 2: 33 answer = "3" 34elif 14 <= (a[9] - a[1])/2 <= 18 and 32 <= (a[35] - a[27])/2 <= 36 and 30 <= a[9] <= 34 and -2 <= a[27] <= 2: 35 answer = "4" 36elif -2 <= (a[9] - a[1])/2 <= 2 and 2 <= (a[35] - a[27])/2 <= 6 and -2 <= a[9] <= 2 and -2 <= a[27] <= 2: 37 answer = "5" 38elif -2 <= (a[9] - a[1])/2 <= 2 and 1 <= (a[35] - a[27])/2 <= 5 and -2 <= a[9] <= 2 and -2 <= a[27] <= 2: 39 answer = "6" 40elif -2 <= (a[9] - a[1])/2 <= 2 and 6 <= (a[35] - a[27])/2 <= 10 and -2 <= a[9] <= 2 and 14 <= a[27] <= 18: 41 answer = "7" 42elif -2 <= (a[9] - a[1])/2 <= 2 and 0 <= (a[35] - a[27])/2 <= 4 and -2 <= a[9] <= 2 and -2 <= a[27] <= 2: 43 answer = "8" 44else: 45 answer = "9" 46 47print("番号は " + answer + " です。")
num.png(一番上の数字書いてないやつ)の縦線の左側のスペースに、0~9の数字を描いて、認識させます(〇.pngには、認識させたい画像のファイル名)。
しかし、手書きの数字、例えば以下
の精度は0です。
どのようにすれば精度が上がるでしょうか。
あなたの回答
tips
プレビュー