質問するログイン新規登録
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

688閲覧

画像を読み込み、全ピクセルのRGBデータをprintしたい。

babamichiru

総合スコア6

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2025/09/29 06:13

0

0

実現したいこと

1.画像(JPEG)を読み込んで、各ピクセルの色情報を得たい。

前提

画像をスキャナーで読み込み、全ピクセルのカラーデータを取得する為の事前テストとして以下の投稿を参考にしています。https://labo-code.com/python/image-analysis/image-to-list/
記事に基づいてVScodeで試しましたが、エラーが出て結果を見る事が出来ていません。

発生している問題・エラーメッセージ

PS C:\Users\babam> & C:/Users/babam/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/babam/Desktop/LabCode/python/data-analysis/input-image/import Image.py"
Traceback (most recent call last):
File "c:\Users\babam\Desktop\LabCode\python\data-analysis\input-image\import Image.py", line 4, in <module>
img = Image.open('cat_gray.jpg')
File "C:\Users\babam\AppData\Local\Programs\Python\Python313\Lib\site-packages\PIL\Image.py", line 3513, in open
fp = builtins.open(filename, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'cat_gray.jpg'

該当のソースコード

Python 3.13

コード

from PIL import Image import numpy as np # 画像データの読み込み img = Image.open('cat_gray.jpg') # 画像のサイズ(幅[px] x 高さ[px])を取得し、それぞれを変数に代入 width, height = img.size print(img.size) print() # 画像左上の原点(0,0)から横に99、下に99進んだ位置にあるピクセルの色を数値として取得できる print(img.getpixel((99, 99))) print() # 0が格納された配列を画像のサイズと同じサイズで用意 image_array = np.empty((height, width), dtype = int) print(image_array) print() for y in range(height): for x in range(width): # 順次、ピクセルの色の数値を代入している image_array[y][x] = img.getpixel((x, y)) # 画像データが数値の配列になっていることが確認できる print(image_array) ### 試したこと pip install pillow o.k pip install numpy o.k 画像(cat_gray.jpg)の位置 : デスクトップ>LabCode>python>data-analysis>input-image プログラム(import Image.py)の位置 : 同上 ### 補足情報(FW/ツールのバージョンなど) 参照URL: https://labo-code.com/python/image-analysis/image-to-list/ OS:windows11  tool:Visual Studio Code よろしくお願いします。

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

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

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

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

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

TakaiY

2025/09/29 06:36

コード見てませんが、「FileNotFoundError: [Errno 2] No such file or directory: 'cat_gray.jpg'」からすると、対象のjpegファイルがみつからないようです。 まず、この 「cat_gray.jpg」をフルパスにするとどうなりますか?
kikukiku

2025/09/29 06:36

下記のように、ファイルの場所も指定しましょう。 img = Image.open('C:\\Users\\yourname\\Pictures\\cat_gray.jpg')
melian

2025/09/29 06:55 編集

参照している記事を確認してみると、 > コードが書けたら、ターミナル上でcwdをDesktop/LabCode/python/data-analysis/input-imageに変更し、$ python input_image.pyとコマンド入力し、プログラムを実行しましょう。 と書かれています。なので、cat_gray.jpg を input-image フォルダに置いたのであれば、 cd c:/Users/babam/Desktop/LabCode/python/data-analysis/input-image としてから、 C:/Users/babam/AppData/Local/Programs/Python/Python313/python.exe "import Image.py" を実行するとよいかと思います。
kikukiku

2025/09/29 07:05

melianさん ナイス。
babamichiru

2025/10/03 06:49

コメントありがとうございます。⚪︎⚪︎を試しましたがまだ解決できていません。 >>> & C:/Users/babam/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/babam/Desktop/LabCode/python/data-analysis/input-image/Neko_ Image.py" File "<stdin>", line 1 & C:/Users/babam/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/babam/Desktop/LabCode/python/data-analysis/input-image/Neko_ Image.py" ^ SyntaxError: invalid syntax ご提案のプログラムを実行しましたが、上記エラーが出ました。場所は”&”の所です。 何が問題なのでしょうか?
melian

2025/10/03 06:59

Python のインタラクティブモードで実行しているのではないでしょうか。質問に記載されている通りに PowerShell 上で実行する必要があります。それから、「ご提案のプログラムを実行しましたが」とありますが、コメントしたものとは異なる様です。
guest

回答2

0

回答とは言えないので御参考ですが,問題点を切り分けるために下記を試してみては如何でしょうか。

インストールは必要ですが,requests モジュールを用いると参考ページに置かれている画像ファイルの URL から直接 Image オブジェクトを取得できます。URL はブラウザで画像を右クリックしてメニューを開き「画像アドレスをコピー」等で取得できます。

また,np.array() 関数を用いれば Image オブジェクトから(Numpy の)配列に変換できます。

Python

1from PIL import Image 2import numpy as np 3import io, requests 4 5url = 'https://labo-code.com/wp-content/uploads/2020/06/cat_gray-1.jpg' 6img = Image.open(io.BytesIO(requests.get(url).content)) 7 8image_array = np.array(img) 9print(image_array) 10# [[176 176 176 ... 5 5 5] 11# [176 176 176 ... 5 5 5] 12# [176 176 176 ... 5 5 5] 13# ... 14# [183 183 183 ... 151 151 151] 15# [183 183 183 ... 148 148 148] 16# [183 183 184 ... 145 145 145]]

(追記)

VSCode に「Python extension」はインストール済みと思われるので,コードを実行する手順の一例を示します。

  • ブラウザ

    • コードの右上隅の[+]をクリックしてコードをコピー
  • VSCode

    • File -> New Text File
    • Edit -> Paste
    • File -> Save As...
      • 適当なファイル名(例えば test1.py)をつけて「保存」
    • タブのファイル名(test1.py)を確認し,実行ボタン(右三角)をクリック

 

(追記2)

hiroki-o さんの回答と同様ですが,input_image.py をエディタで以下のように修正する必要がありそうです。

Python

1for y in range(height): for x in range(width): # 順次、ピクセルの色の数値を代入している 2image_array[y][x] = img.getpixel((x, y)) 3 4# 上記2行を下記のように改行とインデントを追加して4行にする 5 6for y in range(height): 7 for x in range(width): 8 # 順次、ピクセルの色の数値を代入している 9 image_array[y][x] = img.getpixel((x, y)) 10

投稿2025/10/01 09:27

編集2025/10/04 14:32
little_street

総合スコア533

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

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

hiroki-o

2025/10/01 13:26

つまり、原作の12行目以降は、以下の2行で済むのですね。素晴らしい! image_array = np.array(img) print(image_array)
babamichiru

2025/10/03 06:32

回答ありがとうございます。試してみましたが解決できませんでした。 VScodeで実行して見ましたが、&の所に以下のエラーが出ました。 >>> & C:/Users/babam/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/babam/Desktop/LabCode/python/data-analysis/input-image/from PIL import Image.py" File "<stdin>", line 1 & C:/Users/babam/AppData/Local/Programs/Python/Python313/python.exe "c:/Users/babam/Desktop/LabCode/python/data-analysis/input-image/from PIL import Image.py" ^ SyntaxError: invalid syntax この場合どの辺りに原因がありそうでしょうか?
hiroki-o

2025/10/03 10:11

「exit()」と叩いて、インタラクティブモードを抜けてください。 そうしたらPowerShellに戻るので、「python ソースファイル名」と1行で叩いて実行してください。 pythonの後ろで改行しないでください。
little_street

2025/10/04 14:32 編集

コードを VSCode で実行する手順の一例を回答に(追記)しました。
babamichiru

2025/10/04 00:28

回答ありがとうございます。試してみましたが解決できませんでした。 プログラムは以下の様になっています。 15 print() 16 for y in range(height): 17 for x in range(width): 18 # 順次、ピクセルの色の数値を代入している 19 image_array[y][x] = img.getpixel((x, y)) VScodeで実行した後に何やらエラーが出ました。 PS C:\Users\babam\Desktop\LabCode\python\data-analysis\input-image> python imput_image.py File "C:\Users\babam\Desktop\LabCode\python\data-analysis\input-image\imput_image.py", line 16 for y in range(height): for x in range(width): ^^^ SyntaxError: invalid syntax この場合どの辺りに原因がありそうでしょうか?
little_street

2025/10/04 02:18

コードの修正案を(追記2)に記載しました。
guest

0

コメントの通りなのですが、補足も兼ねて回答します。
(なぜ、誰も回答しないのか謎...)

Windows 11、Python 3.13.7で確認しました。

まず、ソース16行目に改行が入っていないので、改行します。

for y in range(height): for x in range(width): # 順次、ピクセルの色の数値を代入している image_array[y][x] = img.getpixel((x, y))

エラーは、ソースのカレントから画像ファイルが見えないという意味です。
今回はソースと画像が同じ場所にあるので、そこで実行するのが簡単です。

PowerShellで、

cd C:/Users/babam/Desktop/LabCode/python/data-analysis/input-image python "import Image.py"

と叩くと実行できます。

python.exeは、パスが通っているなら、フルパスで書く必要はありません。
PowerShellで、

python -V

でバージョンが表示されたら、パスが通っています。

通っていない場合は、インストーラーでチェックを付けるのを忘れているので、

  • 「システムのプロパティ」から、環境変数のpathに追加する
  • インストーラーを再実行する(「インストールされているアプリ」から「変更」)

のどちらかを実施してください。

(コメントに対する追記)
python -Vでバージョン表示されるなら、パスは通っています。
インストーラーの再実行等は不要です。

提示されている情報から、ソースファイル名はimport Image.pyと判断しましたが、違うのでしょうか?
import Image.pyなら

python "import Image.py"

もし、Image.pyなら

python Image.py

と「1行で」叩いてください。(pythonの後ろで改行しない)

投稿2025/09/30 10:17

編集2025/10/01 03:07
hiroki-o

総合スコア1642

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

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

babamichiru

2025/10/01 02:15

回答ありがとうございます。試してみましたが解決できませんでした。 (試した結果の詳細を記載してください) 1.16行末に改行を入れました。 2.python -V -> Python 3.13.5 O.Kです。 3.python -> >>> Pythonが立ち上がりました。 4.import Image.py -> エラー発生 Traceback (most recent call last): File "<stdin>", line 1, in <module> import platform ModuleNotFoundError: No module named 'Image' この場合どの辺りに原因がありそうでしょうか? 解決策で、”環境変数のpathに追加する”方法が判らないので、”インストーラーを再実行”したいのですが、 これは、”python”の再インストールで良いのでしょうか?
babamichiru

2025/10/03 06:20

回答ありがとうございます。 1.pythonは再インストールしました。(python 3.13) 2.プログラム名称が”import Image.py"になっていたので、”input_Image.py"に変更しました。 その上で、下記のようにVScodeにて実行した所、以下の様にエラーが出ました。 PS C:\Users\babam\Desktop\LabCode\python\data-analysis\input-image> python input_image.py File "C:\Users\babam\Desktop\LabCode\python\data-analysis\input-image\input_image.py", line 16 for y in range(height): for x in range(width): ^^^ SyntaxError: invalid syntax for x の所に問題があるようですが、判りません。 大変お手数で申し訳ありませんが、どうすれば良いかご意見をお願いします。
hiroki-o

2025/10/03 10:12

回答した通り、16行目に改行を入れてください。 もしくは、12行目以降を削除して、little_streetさんの回答の8~9行目に差し替えてください。 結果は同じです。 (参考ソースは改行が間違っている、かつ、冗長)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問