Я пытаюсь использовать функцию, которая выполняет итерации по фрейму данных местоположений изображений и преобразует эти изображения, а затем сохраняет их обратно в том же каталоге.
Заголовок таблицы данных, в которой хранятся изображения
Определенная мною функция выглядит следующим образом:
from PIL import Image, ImageEnhance
def image_build(img, df):
for img in df[img]:
count = 1
pic = df[img]
if df['label'].any() == 0:
im = Image.open(df[img])
enh = ImageEnhance.Contrast(im)
im = enh.enhance(1.9)
im = im.rotate(90)
im = im.transpose(Image.FLIP_LEFT_RIGHT)
im = im.resize(224, 224)
save_dir = 'N:/Users/Howell/Kaggle/X_Ray/chest_xray/train/NORMAL/'
im.save(save_dir/'new_image_'+count+'.jpeg')
count += count + 1
print(count)
Затем я пытаюсь использовать эту функцию:
image_build('image', train_data)
Но я получаю следующую ошибку:
> --------------------------------------------------------------------------- KeyError Traceback (most recent call
> last)
> C:\ProgramData\Anaconda3\envs\tensorflowenvironment\lib\site-packages\pandas\core\indexes\base.py
> in get_loc(self, key, method, tolerance) 2656 try:
> -> 2657 return self._engine.get_loc(key) 2658 except KeyError:
>
> pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
>
> pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
>
> pandas/_libs/hashtable_class_helper.pxi in
> pandas._libs.hashtable.PyObjectHashTable.get_item()
>
> pandas/_libs/hashtable_class_helper.pxi in
> pandas._libs.hashtable.PyObjectHashTable.get_item()
>
> KeyError:
> WindowsPath('N:/Users/Howell/Kaggle/X_Ray/chest_xray/train/NORMAL/IM-0580-0001.jpeg')
>
> During handling of the above exception, another exception occurred:
>
> KeyError Traceback (most recent call
> last) <ipython-input-144-d17ac9ecd789> in <module>
> ----> 1 image_build('image', train_data)
>
> <ipython-input-143-cf988e867715> in image_build(img, df)
> 2 for img in df[img]:
> 3 count = 1
> ----> 4 pic = df[img]
> 5 if df['label'].any() == 0:
> 6 im = Image.open(df[img])
>
> C:\ProgramData\Anaconda3\envs\tensorflowenvironment\lib\site-packages\pandas\core\frame.py
> in __getitem__(self, key) 2925 if self.columns.nlevels
> > 1: 2926 return self._getitem_multilevel(key)
> -> 2927 indexer = self.columns.get_loc(key) 2928 if is_integer(indexer): 2929 indexer = [indexer]
>
> C:\ProgramData\Anaconda3\envs\tensorflowenvironment\lib\site-packages\pandas\core\indexes\base.py
> in get_loc(self, key, method, tolerance) 2657
> return self._engine.get_loc(key) 2658 except KeyError:
> -> 2659 return self._engine.get_loc(self._maybe_cast_indexer(key)) 2660
> indexer = self.get_indexer([key], method=method, tolerance=tolerance)
> 2661 if indexer.ndim > 1 or indexer.size > 1:
>
> pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
>
> pandas/_libs/index.pyx in pandas._libs.index.IndexEngine.get_loc()
>
> pandas/_libs/hashtable_class_helper.pxi in
> pandas._libs.hashtable.PyObjectHashTable.get_item()
>
> pandas/_libs/hashtable_class_helper.pxi in
> pandas._libs.hashtable.PyObjectHashTable.get_item()
>
> KeyError:
> WindowsPath('N:/Users/Howell/Kaggle/X_Ray/chest_xray/train/NORMAL/IM-0580-0001.jpeg')
Я только что обнаружил Подушку, поэтому я не уверен, что делаю неправильно.
Теперь я изменил функцию на следующую, и она работает без ошибок, но ничего не делает ... даже оператор print
.
def image_build(img, df):
for img in df[img]:
count = 1
if df['label'].any() == 0:
print('pass_image')
pic = df[img]
im = Image.open(pic)
enh = ImageEnhance.Contrast(im)
img = enh.enhance(1.9)
img = im.rotate(90)
img = im.transpose(Image.FLIP_LEFT_RIGHT)
img = im.resize(224, 224)
save_dir = 'N:/Users/Howell/Kaggle/X_Ray/chest_xray/train/NORMAL/'
img.save(save_dir / 'new_image_'+count+'.jpeg')
count += 1
С помощью нескольких людей,следующие запуски, но производят только одно изображение и застревают при печати 3
.
из PIL import Image, ImageEnhance
def image_build(img, df):
for index,row in df.iterrows():
count = 1
pic = row[img]
if row['label'] == 0:
im = Image.open(pic)
enh = ImageEnhance.Contrast(im)
im = enh.enhance(1.9)
im = im.rotate(90)
im = im.transpose(Image.FLIP_LEFT_RIGHT)
im = im.resize((750, 500))
save_dir = Path('N:/Users/Howell/Kaggle/X_Ray/chest_xray/train/NORMAL/')
count2 = str(count)
im.save(save_dir / str('new_image_'+count2+'.jpeg'))
count += count + 1
print(count)
else:
pass