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

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

新規登録して質問してみよう
ただいま回答率
85.50%
NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1383閲覧

複数の画像データをグレースケールの一次配列に変換したい

Chyoro

総合スコア15

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

データマイニング

データマイニングは、購買履歴やクレジットカードの利用履歴、電話の通話履歴など企業にある大量のデータを解析して、その中に隠れたパターンやルールを探し出す技術です。DMと略されることもあります。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/07/22 11:06

編集2020/07/23 20:56

こんにちわ。
ディープラーニングのテスト用データとして、フォルダにまとめた複数の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'に変更されただけの同じ内容のものが表示されました。

改めて間違いをご指摘頂ければ有難いです。

よろしくお願いいたします。

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

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

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

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

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

meg_

2020/07/22 13:34

「以下ようなコードを書きましたがinvalid syntaxとなりました。」とのことですがエラー発生箇所はどの行のどこですか?エラーメッセージは出来るだけ全文掲載してください。
Chyoro

2020/07/23 11:58

ご意見ありがとうございます。 _nobu_ score 27 さんへのご返信の中でエラーメッセージ詳細のせますので、お手数ですが再度、御覧頂ければと存じます。
meg_

2020/07/23 12:25

最初の質問から状況が変わった場合には、元の質問を残したまま新たな問題について質問に追記してください。適切な回答が得られやすくなるかと思います。
Chyoro

2020/07/23 20:54

ご指導ありがとうございます。 質問更新してみました。 ご確認と、指摘よろしくお願いいたします。
guest

回答2

0

ベストアンサー

gray_imgはPIL.Image.Imageのリストですので、下記で良いかと思います。

Python

1x = np.array([np.array(fname) for fname in gray_img])

投稿2020/07/23 22:37

編集2020/07/23 22:39
meg_

総合スコア10577

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

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

Chyoro

2020/07/24 01:29

ありがとうございます。無事解決いたしました。 今後ともよろしくお願いいたします。
guest

0

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])                       ↑ココ

に変えたらどうですか?
たぶん,( が一つ多いです.

投稿2020/07/22 17:02

_nobu_

総合スコア27

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

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

Chyoro

2020/07/23 12:11

ご回答ありがとうございます。 ご指摘頂いた修正で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'に変更されただけの同じ内容となりました。 改めて間違いをご指摘頂ければ有難いです。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問