Как удалить изображения с низким значением пикселя в папке - PullRequest
1 голос
/ 10 апреля 2019

У меня проблемы с удалением изображений в папке

Вот что я сделал.

import os,glob
from PIL import Image
from skimage import io
import numpy as np

path = "/Users/Xin/Desktop/SVM-Image-Classification-master/Folder"
# Delete images with the low pixel value
for filename in os.listdir(path):
    images = Image.open(os.path.join(path,filename))
    print(images)
    print(np.mean(images))
    pirnt(os.listdir(path))
    if np.mean(images) < 10:
        os.listdir(path).remove(filename)
print(os.listdir(path))

Я ожидал, что изображения с низким значением пикселя могут быть удалены. Однако в результате, представленном ниже, изображение, которое я хочу удалить, все еще находится в списке.

<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=256x256 at 0x1C19FE37F0>
9.507644653320312
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=256x256 at 0x1C198F2E10>
10.004150390625
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=256x256 at 0x1C19FE37F0>
10.897491455078125
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=256x256 at 0x1C198F2F98>
10.406112670898438
['0543_AD_axial_090_PET.jpg', '0543_AD_axial_091_PET.jpg', '0543_AD_axial_093_PET.jpg', '0543_AD_axial_092_PET.jpg']

Кто-нибудь может мне помочь? Спасибо

1 Ответ

3 голосов
/ 10 апреля 2019

Вы просто удаляете имя файла из временного списка, созданного os.listdir(path). Если вы хотите полностью удалить файл с диска, вам нужно использовать os.remove.

Например:

for filename in os.listdir(path):
    images = Image.open(os.path.join(path,filename))
    if np.mean(images) < 10:
        os.remove(os.path.join(path, filename))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...