こんにちわ。
ディープラーニングのテスト用データとして、フォルダにまとめた複数のjpegデータを1チャンネルのグレースケールの一次配列に変換しようとしています。
以下ようなコードを書きましたがinvalid syntaxとなりました。
import os import numpy as np import glob from PIL import Image, ImageFilter filelist = glob.glob('/*.JPG') #まずグレースケールにしてから gray_img = [Image.open(fname).convert('L') for fname in filelist] #とりあえず96×96(素材の画像サイズ)の配列に変換しようとしました。 x = np.array([np.array(gray_img.read((fname)) for fname in gray_img])
構文の誤りをご指摘ください。
現状、グレースケールに変換の後、配列変換、最終的にそれを一次配列にしようとし考えてます。もっと簡単な書き方があればお教えください。
よろしくお願いいたします。
■頂いたご指摘を参考に以下のように修正しました。
x = np.array([np.array(gray_img.read((fname)) for fname in gray_img])
を
x = np.array([np.array(gray_img.read(fname)) for fname in gray_img])
とし、gray_img.read直後の(をひとつ減らしました。
こちらの修正でinvalid syntaxは回避できたのですが、今度は以下のようなエラーが出ました。
#new:最初にグレースケールにしてその後配列変換 gray_img = [Image.open(fname).convert('L') for fname in filelist] x = np.array([np.array(gray_img.read(fname)) for fname in gray_img]) --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-3-0ce014cae649> in <module> 9 #new:最初にグレースケールにしてその後配列変換 10 gray_img = [Image.open(fname).convert('L') for fname in filelist] ---> 11 x = np.array([np.array(gray_img.read(fname)) for fname in gray_img]) 12 13 #img = Image.open('sample.png') <ipython-input-3-0ce014cae649> in <listcomp>(.0) 9 #new:最初にグレースケールにしてその後配列変換 10 gray_img = [Image.open(fname).convert('L') for fname in filelist] ---> 11 x = np.array([np.array(gray_img.read(fname)) for fname in gray_img]) 12 13 #img = Image.open('sample.png') AttributeError: 'list' object has no attribute 'read'
ちなみに 'read'を'open'に変更しても、エラーメッセージもたんに'read'から'open'に変更されただけの同じ内容のものが表示されました。
改めて間違いをご指摘頂ければ有難いです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー