前提・実現したいこと
最近、pythonの勉強を始めた初心者です。
画像ファイルから数字を予測するプログラムを作っていますが、どうしても同じエラーが出てきてしまいます。お力をお貸しいただけると幸いです。
発生している問題・エラーメッセージ
FileNotFoundError: [Errno 2] No such file or directory: '2.png'
エラーメッセージ ```--------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) <ipython-input-1-00f0f06a1c43> in <module> 28 29 # 画像ファイルを数値リストに変換する ---> 30 data = imageToData("2.png") 31 # 数値を予測する 32 predictDigits(data) <ipython-input-1-00f0f06a1c43> in imageToData(filename) 7 def imageToData(filename): 8 # 画像を8x8のグレースケールに変換 ----> 9 grayImage = PIL.Image.open(filename).convert("L") 10 grayImage = grayImage.resize((8.8),PIL.Image.ANTIALIAS) 11 # 数値リストに変換 ~/opt/anaconda3/lib/python3.8/site-packages/PIL/Image.py in open(fp, mode, formats) 2889 2890 if filename: -> 2891 fp = builtins.open(filename, "rb") 2892 exclusive_fp = True 2893 FileNotFoundError: [Errno 2] No such file or directory: '2.png' ### 該当のソースコード ```ここに言語名を入力 ソースコード ```import sklearn.datasets import sklearn.svm import PIL.Image import numpy # 画像ファイルを数値リストに変換する def imageToData(filename): # 画像を8x8のグレースケールに変換 grayImage = PIL.Image.open(filename).convert("L") grayImage = grayImage.resize((8.8),PIL.Image.ANTIALIAS) # 数値リストに変換 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.01) clf.fit(digits.data, digits.target) # 予測結果を表示する n = clf.predict([data]) print("予測=",n) # 画像ファイルを数値リストに変換する data = imageToData("2.png") # 数値を予測する predictDigits(data) ### 試したこと 2.pngのファイルがあるか、名前が違うか確認しております。 ### 補足情報(FW/ツールのバージョンなど) python3.8 anaconda3 Jupyter lab
"2.png"を絶対パスで書いたらどうでしょうか?
ご教授有難うございました。絶対パスで書いてみたら底のエラーは無くなりました。しかし次にTypeError: 'float' object is not iterableと出てくるようになりました。絶対パスで書くとtypeもかわるのでしょうか?本当の初心者ですみません。
>2.pngのファイルがあるか、名前が違うか確認しております。
なぜ確認した結果を書かないのか?
コードは「コードの挿入」で記入しましょう。
meg_様
ご教授有難うございます。
> 絶対パスで書くとtypeもかわるのでしょうか?
そんなことはありません
エラーになるのは、コードにバグがあるからです
現状コードが読み辛いです
pythonコードの一番最初の行の上に
```python
だけの行を挿入してください
また、pythonコードの一番最後の行の下に
```
だけの行を挿入してください
回答1件
あなたの回答
tips
プレビュー