###解決したいこと
jupyternotebook上で、入力された画像のコントラストをpillowを用いて任意の値に変更し、変更された画像を保存する関数を実装中に、発生したエラーを解決したいです。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) ~.conda\envs\__\lib\site-packages\PIL\Image.py in open(fp, mode) 2769 try: -> 2770 fp.seek(0) 2771 except (AttributeError, io.UnsupportedOperation): AttributeError: 'numpy.ndarray' object has no attribute 'seek' During handling of the above exception, another exception occurred: AttributeError Traceback (most recent call last) <ipython-input-5-94a10e135f89> in <module> 48 i = i + 1 49 ---> 50 image_color_change(1.2,1.5,(225, 300)) <ipython-input-5-94a10e135f89> in image_color_change(contrast, gamma, resolution) 20 else: 21 for picture in img_list_train: ---> 22 img = Image.open(picture) 23 img_arged = ImageEnhance.Contrast(img).enhance(contrast) 24 img_arged = np.asarray(img_arged) ~.conda\envs\__\lib\site-packages\PIL\Image.py in open(fp, mode) 2770 fp.seek(0) 2771 except (AttributeError, io.UnsupportedOperation): -> 2772 fp = io.BytesIO(fp.read()) 2773 exclusive_fp = True 2774 AttributeError: 'numpy.ndarray' object has no attribute 'read'
該当のソースコード
python
1import glob 2import tensorflow as tf 3import keras 4from keras.preprocessing.image import array_to_img, img_to_array, load_img, save_img 5import os 6import shutil 7 8from PIL import ImageEnhance, Image 9import numpy as np 10import cv2 11 12def image_color_change(contrast,resolution): 13 img_list_train = sorted(glob.glob(".\image\resized\"+str(resolution)+"\train\*.png")) 14 img_list_train_argumented = sorted(glob.glob(".\image\argumented\"+str(resolution)+"\train\*.png")) 15 i = int(len(img_list_train_argumented)) + 1 16 image_num =int(len(img_list_train)) 17 18 if contrast == 1.0: 19 pass 20 else: 21 for picture in img_list_train: 22 img = Image.open(picture) 23 img_arged = ImageEnhance.Contrast(img).enhance(contrast) 24 img_arged = np.asarray(img_arged) 25 img_list_train.append(img_arged) 26 27 del img_list_train[:image_num] 28 29 if img_list_train[0] == img_list_train_argumented[0]: 30 pass 31 else: 32 for picture in img_list_train: 33 img = img_to_array(load_img(picture, target_size=resolution,interpolation='bilinear')) 34 save_img(".\image\argumented\"+str(resolution)+"\train\"+'{:0=6}'.format(i)+".png", img) 35 i = i + 1 36 37image_color_change(1.2,(225, 300))
試したこと
今回生じたエラーは「データ型の違い」によるのものではないかと思いpillowの開発元ページを参照しましたが、自分の理解力、知識不足によりどの部分をどのように変えるべきなのか分かりませんでした。
また、pillow(PIL)をpipでインストールしていたため、アンインストール後condaで再インストールしましたが、解決できませんでした。
補足情報(FW/ツールのバージョンなど)
python == 3.6.8
pillow == 6.2.1
tensor flow == 2.1.0
keras == 2.3.1
jupyter notebook
初学者のため、質問内容や記述すべきことに多々不備があると思います。
お手数をおかけしますが、ご指摘、ご回答の程よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/05 04:17