iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >怎么使用python删除同一文件夹下相似的图片
  • 956
分享到

怎么使用python删除同一文件夹下相似的图片

2023-06-14 23:06:57 956人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

小编给大家分享一下怎么使用python删除同一文件夹下相似的图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Python有哪些常用库python常用的库:1.r

小编给大家分享一下怎么使用python删除同一文件夹下相似的图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Python有哪些常用库

python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。

前言

最近整理图片发现,好多图片都非常相似,于是写如下代码去删除,有两种方法:

注:第一种方法只对于连续图片(例一个视频里截下的图片)准确率也较高,其效率高;第二种方法准确率高,但效率低

方法一:相邻两个文件比较相似度,相似就把第二个加到新列表里,然后进行新列表去重,统一删除。

例如:有文件1-10,首先1和2相比较,若相似,则把2加入到新列表里,再接着2和3相比较,若不相似,则继续进行3和4比较…一直比到最后,然后删除新列表里的图片

代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport cv2from skimage.measure import compare_ssim# import shutil# def yidong(filename1,filename2):#     shutil.move(filename1,filename2)def delete(filename1):    os.remove(filename1)if __name__ == '__main__':    path = r'D:\camera_pic\test\rec_pic'    # save_path_img = r'E:\0115_test\rec_pic'    # os.makedirs(save_path_img, exist_ok=True)    img_path = path    imgs_n = []    num = []    img_files = [os.path.join(rootdir, file) for rootdir, _, files in os.walk(path) for file in files if                 (file.endswith('.jpg'))]    for currIndex, filename in enumerate(img_files):        if not os.path.exists(img_files[currIndex]):            print('not exist', img_files[currIndex])            break        img = cv2.imread(img_files[currIndex])        img1 = cv2.imread(img_files[currIndex + 1])        ssim = compare_ssim(img, img1, multichannel=True)        if ssim > 0.9:            imgs_n.append(img_files[currIndex + 1])            print(img_files[currIndex], img_files[currIndex + 1], ssim)        else:            print('small_ssim',img_files[currIndex], img_files[currIndex + 1], ssim)        currIndex += 1        if currIndex >= len(img_files)-1:            break    for image in imgs_n:        # yidong(image, save_path_img)        delete(image)

方法二:逐个去比较,若相似,则从原来列表删除,添加到新列表里,若不相似,则继续

例如:有文件1-10,首先1和2相比较,若相似,则把2在原列表删除同时加入到新列表里,再接着1和3相比较,若不相似,则继续进行1和4比较…一直比,到最后一个,再继续,正常应该再从2开始比较,但2被删除了,所以从3开始,继续之前的操作,最后把新列表里的删除。

代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-import osimport cv2from skimage.measure import compare_ssimimport shutilimport datetimedef yidong(filename1,filename2):    shutil.move(filename1,filename2)def delete(filename1):    os.remove(filename1)    print('real_time:',now_now-now)if __name__ == '__main__':    path = r'F:\temp\demo'    # save_path_img = r'F:\temp\demo_save'    # os.makedirs(save_path_img, exist_ok=True)    for (root, dirs, files) in os.walk(path):        for dirc in dirs:            if dirc == 'rec_pic':                pic_path = os.path.join(root, dirc)                img_path = pic_path                imgs_n = []                num = []                del_list = []                img_files = [os.path.join(rootdir, file) for rootdir, _, files in os.walk(img_path) for file in files if                             (file.endswith('.jpg'))]                for currIndex, filename in enumerate(img_files):                    if not os.path.exists(img_files[currIndex]):                        print('not exist', img_files[currIndex])                        break                    new_cur = 0                    for i in range(10000000):                        currIndex1 =new_cur                        if currIndex1 >= len(img_files) - currIndex - 1:                            break                        else:                            size = os.path.getsize(img_files[currIndex1 + currIndex + 1])                            if size < 512:                                # delete(img_files[currIndex + 1])                                del_list.append(img_files.pop(currIndex1 + currIndex + 1))                            else:                                img = cv2.imread(img_files[currIndex])                                img = cv2.resize(img, (46, 46), interpolation=cv2.INTER_CUBIC)                                img1 = cv2.imread(img_files[currIndex1 + currIndex + 1])                                img1 = cv2.resize(img1, (46, 46), interpolation=cv2.INTER_CUBIC)                                ssim = compare_ssim(img, img1, multichannel=True)                                if ssim > 0.9:                                    # imgs_n.append(img_files[currIndex + 1])                                    print(img_files[currIndex], img_files[currIndex1 + currIndex + 1], ssim)                                    del_list.append(img_files.pop(currIndex1 + currIndex + 1))                                    new_cur = currIndex1                                else:                                    new_cur = currIndex1 + 1                                    print('small_ssim',img_files[currIndex], img_files[currIndex1 + currIndex + 1], ssim)                for image in del_list:                    # yidong(image, save_path_img)                    delete(image)                    print('delete',image)

以上是“怎么使用python删除同一文件夹下相似的图片”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网Python频道!

--结束END--

本文标题: 怎么使用python删除同一文件夹下相似的图片

本文链接: https://www.lsjlt.com/news/275850.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用python删除同一文件夹下相似的图片
    小编给大家分享一下怎么使用python删除同一文件夹下相似的图片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python有哪些常用库python常用的库:1.r...
    99+
    2023-06-14
  • 使用python如何删除同一文件夹下相似的图片
    前言 最近整理图片发现,好多图片都非常相似,于是写如下代码去删除,有两种方法: 注:第一种方法只对于连续图片(例一个视频里截下的图片)准确率也较高,其效率高;第二种方法准确率高,但效率低 方法一:相邻两个文件比较相似...
    99+
    2022-06-02
    python删除图片 python删除列表重复元素 python 删除相似图片
  • 教你怎么用python删除相似度高的图片
    1. 前言 因为输入是视频,切完帧之后都是连续图片,所以我的目录结构如下: 其中frame_output是视频切帧后的保存路径,1和2文件夹分别对应两个是视频切帧后的图片。 2. 切帧代码如下: #encodi...
    99+
    2022-06-02
    python删除相似度高的图片 python 删除图片
  • 使用python怎么删除文件夹中的重复图片
    这篇文章给大家介绍使用python怎么删除文件夹中的重复图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一部分:判断两张图片是否相同要查找重复的图片,必然绕不开判断两张图片是否相同。判断两张图片简单呀!图片可以看成...
    99+
    2023-06-15
  • Python中怎么删除目录下的相同文件
    本篇文章给大家分享的是有关Python中怎么删除目录下的相同文件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。# -*- coding: cp93...
    99+
    2023-06-17
  • 用python删除文件夹中的重复图片(图片去重)
    目录第一部分:判断两张图片是否相同第二部分:判断文件夹内是否有重复图片第三部分:程序运行结果第四部分:注意第一部分:判断两张图片是否相同 要查找重复的图片,必然绕不开判断两张图片是否相同。判断两张图片简单呀!图片可以...
    99+
    2022-06-02
    python 删除重复 python 删除图片 python 图片去重
  • 使用python怎么删除任意一个路径下的文件夹
    在python中使用shutil模块删除指定路径下的文件夹,具体方法如下:import osimport shutil #导入shutil模块delList = []delDir = "/home/test"delList = os.lis...
    99+
    2022-10-08
  • 怎么用php删除文件夹下的某个子文件夹
    如果你是一个 PHP 开发者,你可能会遇到需要删除文件夹下的某个文件夹的需求。虽然 PHP 提供了删除文件和文件夹的内置函数,但却没有提供单独删除文件夹的函数。在这篇文章中,我们将向你展示如何使用 PHP 删除文件夹下的某个子文件夹。删除文...
    99+
    2023-05-14
    php php文件目录
  • Linux中怎么使用shell删除文件夹下所有文件
    在Linux中,可以使用以下命令来删除文件夹下的所有文件:1. 使用rm命令删除文件夹下的所有文件,但保留文件夹本身:```rm /...
    99+
    2023-08-08
    Linux shell
  • 怎么在Python中使用Opencv识别相似的图片
    这篇文章给大家介绍怎么在Python中使用Opencv识别相似的图片,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网站均...
    99+
    2023-06-14
  • 如何使用CMD下一个命令遍历目录并删除相同文件
    这篇文章将为大家详细讲解有关如何使用CMD下一个命令遍历目录并删除相同文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。如果不小心安装了些制造垃圾的小工具,在系统中各个盘符下都产生了相同的垃圾文件,如我系...
    99+
    2023-06-08
  • Linux下怎么删除长时间不使用的旧文件
    这篇文章主要为大家展示了“Linux下怎么删除长时间不使用的旧文件”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux下怎么删除长时间不使用的旧文件”这篇文章吧。tmpwatch 是什么tm...
    99+
    2023-06-15
  • php使用tcpdf,通过html生成的pdf文件,合同章(图片)错位?需要怎么解决
    php使用tcpdf,通过html生成的pdf文件,合同章有错位?需要怎么解决? html下的排版正确,如图: html代码,如图 生成pdf后的文件,如图 $pdf->Image(),计算一下x、y的位置就好,一般能确定图片尺寸,...
    99+
    2023-09-04
    pdf
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作