まずイラレで文字画像を作ります。
それを学習データから判定します。
import cv2 import joblib def predict_digit(filename): clf = joblib.load("digits.pkl") # 自分で用意した手書きの画像ファイルを読み込む my_img = cv2.imread(filename) my_img = cv2.cvtColor(my_img, cv2.COLOR_BGR2GRAY) my_img = cv2.resize(my_img, (8, 8)) my_img = 15 - my_img // 16 # 白黒反転 my_img = my_img.reshape((-1, 64)) # 二次元を一次元に変換 res = clf.predict(my_img) return res[0] n = predict_digit("2.png") print("2.png = " + str(n)) n = predict_digit("5.png") print("5.png = " + str(n)) n = predict_digit("8.png") print("8.png = " + str(n))
$ python3 app.py
2.png = 3
5.png = 7
8.png = 3
おいおいおい、全然合ってないじゃん
まー、2と3、5と7、8と3は似てるといえば似てるけど、せめて一個ぐらい合ってもいいのに。。