python1年生という本の最後のほうにある, 人工知能アプリに手書きの数字を認識させるプログラムで どうしてもうまくいきません。 添削,アドバイス等教えていただけたら幸いです。 入力したコードは↓です。 import tkinter as tk import tkinter.filedialog as fd import PIL.Image import PIL.ImageTk # 機械学習で使うモジュール import sklearn.datasets import sklearn.svm import numpy # 画像ファイルを数値リストに変換する def imageToData(filename): # 画像を8x8のグレースケールに変換 grayImage = PIL.Image.open(filename).convert("L") grayImage = grayImage.resize((8,8),PIL.Image.LANCZOS) # その画像を表示する dispImage = PIL.ImageTk.PhotoImage(grayImage.resize((300,300),resample=0)) imageLabel.configure(image = dispImage) imageLabel.image = dispImage # 数値リストに変換 numImage = numpy.asarray(grayImage, dtyp = float) numImage = numpy.floor(16 - 16 * (numImage / 256)) numImage = numImage.flatten() return numImage # 数値を予測する def predictadigits(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) # 数字を予測する predictadigits(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() エラーコードは↓です。 Traceback (most recent call last): File "C:/Users/NEC-PCuser/Desktop/ファイル名/chino(perfect).py", line 48, in <module> btn = tk.Button(root, text="ファイルを開く", command = openFile) NameError: name 'openFile' is not defined よろしくお願いします。
プログラミング