首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除包含零像素值的Raster

删除包含零像素值的Raster
EN

Stack Overflow用户
提问于 2021-02-05 00:19:15
回答 1查看 445关注 0票数 0

我有一个工作代码,将迭代一个文件夹,标识和删除,如果一个.tif只包含所有的像素值为零,因此黑色的图像。问题是,我在文件夹中有12,000张图片,这个过程需要很长时间才能完成。我想知道是否有更快的方法可以做到这一点?

代码语言:javascript
复制
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:的输出

代码语言:javascript
复制
(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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 00:28:14

这应该会更快

代码语言:javascript
复制
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也不太熟悉。如果它不起作用,移除它就会导致另一种加速。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66055818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档