質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2120閲覧

〔Python〕画像ファイルをしたいけれど出来ない。。

Rwight

総合スコア63

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/04 04:32

編集2021/07/04 10:08

お忙しい中見ていただき誠にありがとうございます。

デバイス・アプリケーション

Mac OS X(Big sur)・VSCode・IDLE・Pythonというアプリまたバージョンを使用しております。

本題

Python 1年生Chapter5の**画像ファイルから数字を予測するプログラム(P.170・171)**の所を勉強しております。
画像ファイルの読み込みをしたいのですが、エラーによってなかなか出来ない状況が続いております。
色々調べてみて修正をしてみましたが、エラーが出てしまいましたのでteratailに質問をさせて頂きました。
何卒宜しくお願い致します。

ソースコード

ソースコードは以下の通りです。
↓ ↓

py

1import sklearn.datasets 2import sklearn.svm 3import PIL.Image 4import numpy 5 6#画像ファイルを数値リストに変換する 7def imageToData(filename): 8 #画像を8x8のグレースケールに変換 9 grayImage = PIL.Image.open(filename).convert("L") 10 grayImage = grayImage.resize((8,8),PIL.Image.ANTIALIAS) 11 #数値リストに変換 12 numImage = numpy.asarray(grayImage, dtype = float) 13 numImage = numpy.floor(16 - 16 * (numImage / 256)) 14 numImage = numImage.flatten() 15 16 return numImage 17 18#数字を予測する 19def predictDigits(data): 20 #学習用データを読み込む 21 digits = sklearn.datasets.load_digits() 22 #機械学習 23 clf = sklearn.svm.SVC(gamma = 0.001) 24 clf.fit(digits.data, digits.target) 25 #予測結果を表示する 26 n = clf.predict([data]) 27 print("予測=",n) 28 29#画像ファイルを数値リストに変換する 30data = imageToData('2.png') 31#数字を予測する 32predictDigits(data)

エラーコード

Error

1Traceback (most recent call last): 2 File "(省略)/Python1年生/Chapter 5/機械学習に挑戦しよう/predictDigits.py", line 30, in <module> 3 data = imageToData('2.png') 4 File "(省略)/Python1年生/Chapter 5/機械学習に挑戦しよう/predictDigits.py", line 12, in imageToData 5 numImage = numpy.asarray(grayImage, dtype = float) 6TypeError: __array__() takes 1 positional argument but 2 were given

終わりに

最後までご覧いただき誠にありがとうございました。
不備な点がございましたら、申し訳ありませんが、〔質問への追記・修正依頼〕へご連絡を宜しくお願い致します。
宜しくお願い致します。
では最後までお忙しい中ありがとうございました。
失礼しました。

追記

Pythonインストール方法

本書の通りに従い、Python3(P.20〜22)をダウンロードを致しました。
上手く伝わっていなかったら申し訳ありません。。。

エラーコード2

Error

1Traceback (most recent call last): 2 File "(省略)/Python1年生/Chapter 5/機械学習に挑戦しよう/predictDigits.py", line 30, in <module> 3 data = imageToData('2.png') 4 File "(省略)/Python1年生/Chapter 5/機械学習に挑戦しよう/predictDigits.py", line 9, in imageToData 5 numImage = numpy.asarray(grayImage, dtype = float) 6File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/PIL/Image.py", line 2912, in open 7 fp = builtins.open(filename, "rb") 8FileNotFoundError: [Errno 2] No such file or directory: '2.png'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

ご報告

現在ご覧頂いてご回答また色々教えていただいた方本当に教えて頂き誠にありがとうございました。
本日の回答・教えて頂いた方は
【jbpb0とppaul】ご回答また、色々教えて頂き誠にありがとうございました。
非常に助かりました、本当にありがとうございました。

今回の問題の原因

今回の原因はフルパスにしなかったのが原因でした。
自分の場合は
「(個人のハードディスクの名前が入っている為非表示)../Python/Python1年生/Chapter5/機械学習に挑戦しよう/predictDigits.py」までフルパスで打っていなかった為こういうエラーが発生致しました。

「ターミナルでは」 Windowsでもほぼ同じです。

1 全てのパスをリセットさせます。

terminal

1MacBook Python % cd (↩️) (MacOSの場合)

terminal

1PS C:\Users(ユーザー)(ファイル名)>Python> cd / (↩️) (Windowsの場合)

2 全て無効にさせてからフルパスを入力します。

terminal

1MacBook ~ % cd (最初のパス(ハードディスク名)から)/(ファイル名)/Python/Python1年生/Chapter5/機械学習に挑戦しよう(↩️)

3 プログラムを実行(▶️)を押せばこう出てきます。

terminal

1MacBook 最初のパス(ハードディスク名)から)/(ファイル名)/Python/Python1年生/Chapter5/機械学習に挑戦しよう % 最初のパス(ハードディスク名)から)/(ファイル名)/Python/Python1年生/Chapter5/機械学習に挑戦しよう/predictDigits.py" 2 3予測= [0]

最後

こんな感じでターミナルを打てば成功するはずです。
不備な点がございましたらご連絡を頂けると出来る限り返信を致します。
お忙しい中ありがとうございました。

本書名など

教材名:「Python1年生」 
カテゴリー:「Chapter5」
ページ:「P.170・171」
ファイル名:「predictDigits.py」

動画視聴

フルパスのやり方の動画は音声はありませんが字幕でやっております。
撮り方は下手ではありますがこれで「なるほどね〜」って理解していただけると非常に嬉しいです。
皆さんの手助けになると嬉しいです。

投稿2021/07/04 12:51

編集2021/07/10 12:03
Rwight

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/07/06 11:42

> 今回の原因はフルパスにしなかったのが原因 本当にそれだけで、もともと質問に書いていた 「__array__() takes 1 positional argument but 2 were given」 も直ったのですか? フルパスにするのは、ppaulさんの回答のコメントに質問者さんが 「質問のと違うエラーメッセージが出てしまいました。」 と書いてる 「No such file or directory: '2.png'」 というエラーを直せるだけではないですか? もともとのエラー 「__array__() takes 1 positional argument but 2 were given」 を直すには、Pillowの一つ古いバージョンを入れる必要があると思っているのですが、そうではないのですか?
Rwight

2021/07/10 04:46 編集

返信がだいぶ遅くなってしまい jbpd0様 大変申し訳ありません。 もともとの質問はもう一度試してみた所 ソースコードを見返してみたら違うソースコードになっていた所が発見しまして、修正したら、次のエラーメッセージが表示されて、 「2.png」ファイルがないよ。っという次のエラーメッセージが発生したので質問の編集を致しました。 そして 「No such file or directory: '2.png'」のエラーメッセージは そちらの「Pillow」が1つ古いバージョンを削除して その後に パスがうまく通っていなかったという事がありまして フルパスにこの回答みたいにしたら上手くいけたので申し訳ありませんでした。 ご連絡がだいぶ遅くなってしまい申し訳ありませんでした。
guest

0

似たような事例で、pillowをupdateしたら動くようになったというのがありました。

TypeError: array() takes 1 positional argument but 2 were given

試してみてください。

投稿2021/07/04 06:00

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Rwight

2021/07/04 07:11

すみません、updateというソースコードはどこに入れればいいのでしょうか? 申し訳ありません。。。
jbpb0

2021/07/04 09:22

ppaulさん > I solved this problems by downgrade PIL from 8.3.0 to 8.2.0. アップデートじゃなくて、ダウングレードさせるみたいです
jbpb0

2021/07/04 09:25

質問者さん お使いのPythonは、どうやってインストールしたのですか? それによって、対処方法が違います
Rwight

2021/07/04 09:48 編集

自分はまだまだ未熟で分かりませんが、一応本の手順通りには一応したはずですが・・・まだ結果はまだという感じです。すみません。。。 Pythonのインストールした場所は追記してありますので、申し訳ありませんがご確認をお願い致します。
jbpb0

2021/07/04 10:00

公式版のPythonをお使いのようなので、たぶんMacのターミナルで下記を実行したら、Pillowの一つ古いバージョンが入って、エラー出なくなると思います pip3 install Pillow==8.2.0
Rwight

2021/07/04 10:09 編集

申し訳ありませんが、質問のと違うエラーメッセージが出てしまいました。 エラーコード(現在 エラーコード2という風で追記しました) FileNotFoundError: [Errno 2] No such file or directory: '2.png' と現在表示されていますが、ファイルがあるけれどない事になっています。どういう現象が起こっているのでしょうか? 色々と非常に申し訳ありません。。。
jbpb0

2021/07/04 10:14

そのエラーメッセージよりも上に、どのファイルの何行目のエラーかが書かれてると思います それが、もともとの質問のエラーの > predictDigits.py", line 12 よりも上の行なら、コード実行のやり方がこれまでと違ってませんか?
Rwight

2021/07/04 10:20

ソースコードは何も変化していませんが、一応再度丁寧に打ち直してみたいと思います。 ここまで付き合ってくれた jbpb0さん誠にありがとうございました。 一旦自分の力で頑張ってみたいと思います。 どうしてもまた無理でしたらまた・・・になるかもしれません。 その時は申し訳ありませんが宜しくお願い致します。 お忙しい中ありがとうございました。
jbpb0

2021/07/04 10:36

エラーコード2に numImage = numpy.asarray(grayImage, dtype = float) と書いてますが、本当は grayImage = PIL.Image.open(filename).convert("L") のはずです 上記は無視して、エラーコード2の > predictDigits.py", line 9 は、もともとの質問のエラーの > predictDigits.py", line 12 よりも上で、これまではエラーになってなかったところなので、これまでと何か状態が変わったということです たとえば、コードを実行してる時のカレントディレクトリが、これまでと違うとか なお、Pillowのバージョンを一つ古くしても、それが原因でそのエラーは起きません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問