前提・実現したいこと
python1年生という本を読み、pythonを利用して、人口知能を作ろう(使おう)
)としています。
発生している問題・エラーメッセージ
人口知能を利用することはできたのですがユーザーが見ている画面に8x8のモザイクで表示されるはずが、変な画質で表示されるのです。(明らかに8x8ではありません。)
import tkinter as tk import tkinter.filedialog as fd import PIL.Image import tkinter as tk import tkinter.filedialog as fd import PIL.Imageimport PIL.ImageTk import sklearn.datasets import sklearn.svm import numpy def imageToData(filename): grayImage=PIL.Image.open(filename).convert("L") grayImage=grayImage.resize((8,8),PIL.Image.ANTIALIAS) dispImage=PIL.ImageTk.PhotoImage(grayImage.resize((300,300))) imageLabel.configure(image=dispImage) imageLabel.image=dispImage numImage=numpy.asarray(grayImage,dtype=float) numImage=numpy.floor(16-16*(numImage/256)) numImage=numImage.flatten() return numImage def predictDigits(data): digits=sklearn.datasets.load_digits() clf=sklearn.svm.SVC(gamma=0.001) clf.fit(digits.data,digits.target) n=clf.predict([data]) textLabel.configure(text="この画像は"+str(n)+"です!") def openfile(): fpath=fd.askopenfilename() if fpath: data=imageToData(fpath) predictDigits(data) root=tk.Tk() root.geometry("400x400") btn=tk.Button(root,text="ファイルを開く",command=openfile) imageLabel=tk.Label() btn.pack() imageLabel.pack() textLabel=tk.Label(text="手書きの数字を認識します!") textLabel.pack() tk.mainloop()
試したこと
本をしっかり見直してみたのですがやはり違いはみつからず、打ち直してみても同じでした。
補足情報
pythonバージョン3.6.1
あなたの回答
tips
プレビュー