前提・実現したいこと
画像を読み込んでガンマ値を調整するプログラムを書いたつもりです。ガンマを0.6から0.9まで変化させたくてループしています。しかし、0.6の時は実行されるのですが、0.7以降ループされずエラーが出てしまいます。
画像の読み込み、ガンマ値をループさせず固定にした時はうまくいったのですが、ループさせてからできなくなりました。よろしくお願いします。
プログラム初心者のため至らぬ点もあると思いますがよろしくお願いします。
発生している問題・エラーメッセージ
0.6 0.7 Traceback (most recent call last): File "d:/~~~/change.py", line 40, in <module> im_1 = 255.0 * (picture / 255.0)**(1 /gamma) TypeError: unsupported operand type(s) for /: 'Image' and 'float'
該当のソースコード
python3.7.9
1import cv2 2import numpy as np 3import glob 4import os.path 5import os 6from PIL import Image 7import matplotlib.pyplot as plt 8 9(パス名は省略) 10 11f=open(new_annotation_txt, mode='w') 12f.close() 13 14with open(picture_name_pass , encoding='utf-8!') as picture_name_data: 15 i=0 16 17 for line in picture_name_data: 18 picture_pass0 = line.replace('\n', '') 19 #picture_pass1 = picture_pass0+ ".jpg" 20 picture = np.array(Image.open(picture_pass0), dtype='float16') 21 22 #ガンマ補正 23 gamma=6/10 24 while gamma<1.0: <-問題点 25 print(gamma) 26 im_1 = 255.0 * (picture / 255.0)**(1 /gamma) 27 im_2 = 255.0 * (picture / 255.0)**gamma 28 29 picture = Image.fromarray(np.uint8(im_1)) 30 #save_pass = picture_pass0 + ".jpg" 31 save_pass =savepoint_pass + str(gamma) + "/" 32 +picture_pass0.replace(picture_pass, '') 33 picture.save(save_pass) 34 35 picture = Image.fromarray(np.uint8(im_2)) 36 save_pass = picture_pass0 + ".jpg" 37 save_pass =savepoint_pass + "1_" + str(gamma) + "/" 38 +picture_pass0.replace(picture_pass, '') 39 40 picture.save(save_pass) 41 gamma+=1/10 42 43 i+=1 44 print(i) 45 picture.close()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 00:31