如何删除文件夹中像素值较低的图像

时间:2019-04-10 17:29:25

标签: python numpy

我在删除文件夹中的图像时遇到一些问题

以下是我所做的。

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 个答案:

答案 0 :(得分:3)

您只是从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))