如何使用python opencv删除文件夹中的特定图像

Posted

技术标签:

【中文标题】如何使用python opencv删除文件夹中的特定图像【英文标题】:how to delete specific image in folder using python opencv 【发布时间】:2020-10-17 23:11:15 【问题描述】:

我使用python OpenCV从图像中检测和裁剪文本,在这种情况下,有一些没有字母或任何其他符号的图像也被裁剪(空白区域)被添加到我想要的文件夹中删除那些我使用cv2.findNonZeros 删除这些图像的特定图像,但我无法做到这一点,

我想在我的代码中使用 python 删除这个图像,有什么简单的逻辑可以实现这个吗?

【问题讨论】:

您想从您的磁盘中删除个人文件吗?见 os.remove docs.python.org/3/library/os.html#os.remove 【参考方案1】:

您的算法应如下所示: 对于文件夹中的每个图像,检查所有像素是否都是白色的(在这里您还可以检查文件是否为图像)。如果所有像素都是白色删除文件。

    如何遍历目录:Loop through directory of images and rotate them all x degrees and save to directory

    检查图像是否全是白色像素:Check if image is all white pixels with OpenCV

    删除文件:https://www.dummies.com/programming/python/how-to-delete-a-file-in-python/

通过此链接,您可以轻松解决您的问题

【讨论】:

我按照你说的尝试并发布答案,如果我实现了,谢谢-@xszym【参考方案2】:

因此您需要删除所有单一颜色的图像,即完整的黑色/白色/任何其他颜色。

import Image, os
import os
path = "C:\\Users\\Ajju\\Desktop\\test_images"
for filename in os.listdir(path):
    img = Image.open(path + '\\' + filename)
    clrs = img.getcolors()
    print filename, len(clrs)
    if len(clrs) == 1:
        os.remove(path + '\\' + filename)

注意事项:

    不要把你的脚本和图片放在同一个文件夹中,因为它会尝试将你的脚本作为图片打开,并抛出错误。

    len(clrs) 实际上显示图像中有多少种颜色。如果为 1,则表示图像是一种颜色。

【讨论】:

以上是关于如何使用python opencv删除文件夹中的特定图像的主要内容,如果未能解决你的问题,请参考以下文章

使用Opencv从python中的图片中删除小边缘

如何在 Python OpenCV 中删除轮廓内的轮廓?

删除图像中的水平线(OpenCV、Python、Matplotlib)

使用 python/opencv/深度学习从图像中删除给定位置的徽标/水印

论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot

Python / OpenCV - 如何按字母顺序加载文件夹中的所有图像