删除包含零像素值的栅格

Delete Rasters that contain pixel values of Zero

我有一个工作代码,它将遍历一个文件夹,识别并删除 .tif 是否只包含全零的像素值,因此是黑色图像。问题是我的文件夹中有 12,000 张图像,完成该过程需要很长时间。我想知道是否有更快的方法可以做到这一点?

from PIL import Image
import os


directory = 'D:/images/'
for image in os.listdir(directory):
    indiv = Image.open(directory + image)
    pixel_values = list(indiv.getdata())
    y = len(pixel_values)

    list_yes = []
    for RGBA in pixel_values:
        if RGBA == (0, 0, 0, 0):
            Black_image = 'yes'
            list_yes.append(Black_image)
            x = len(list_yes)
            if x == y:
                os.remove(directory + image)

黑色.tif输出:

(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
(0, 0, 0, 0)
....
Like 400,000 more rows of this

这应该快得多

directory = 'D:/images/'
for image in os.listdir(directory):
    indiv = Image.open(directory + image)
    if all(pixels == (0, 0, 0, 0) for pixels in list(indiv.getdata())):
        os.remove(directory + image)

我也不确定是否需要 list(...),我对 PIL 不太熟悉。如果它没有工作,删除它应该会导致另一个加速。