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

  介绍

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

python有哪些常用库

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

<强>前言

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

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

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

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

代码如下:

# !/usr/bin/env  python   #,- *安康;编码:utf-8  - * -   import 操作系统   import  cv2   得到skimage.measure  import  compare_ssim   #,import  shutil   #,def  yidong (filename1 filename2):   #,,,,,shutil.move (filename1 filename2)   def 删除(filename1):   ,,,os.remove (filename1)   if  __name__ ==, & # 39; __main__ # 39;:   ,,,path =, " # 39; D: \ camera_pic \ test \ rec_pic& # 39;   ,,,#,save_path_img =, " # 39; E: \ 0115 _t \ rec_pic& # 39;   ,,,#,os.makedirs (save_path_img, exist_ok=True)   ,,,img_path =,路径   ,,,imgs_n =, []   ,,,num =, []   ,,,img_files =, [os.path.join (rootdir,文件),for  rootdir,, _,, files 拷贝os.walk(路径),for  file 拷贝files 如果   ,,,,,,,,,,,,,,,,(file.endswith (& # 39; jpg # 39;)))   ,,,for  currIndex,, filename 拷贝列举(img_files):   ,,,,,,,if  not  os.path.exists (img_files [currIndex]):   ,,,,,,,,,,,印刷(& # 39;not 存在# 39;,,img_files [currIndex])   ,,,,,,,,,,,休息   ,,,,,,,img =, cv2.imread (img_files [currIndex])   ,,,,,,,img1 =, cv2.imread (img_files [currIndex  +, 1])   ,,,,,,,ssim =, compare_ssim (img, img1,,多通道=True)   ,,,,,,,if  ssim 祝辞,0.9:   ,,,,,,,,,,,imgs_n.append (img_files [currIndex  +, 1])   ,,,,,,,,,,,印刷(img_files [currIndex], img_files (currIndex  +, - 1), ssim)   ,,,,,,,其他的:   ,,,,,,,,,,,印刷(& # 39;small_ssim& # 39;, img_files [currIndex], img_files (currIndex  +, - 1), ssim)   ,,,,,,,currIndex  +=1   ,,,,,,,if  currIndex 祝辞=,len (img_files) 1:   ,,,,,,,,,,,休息   ,,,for  image 拷贝imgs_n:   ,,,,,,,#,yidong(图像,save_path_img)   ,,,,,,,删除(图片)

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

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

代码如下:

# !/usr/bin/env  python   #,- *安康;编码:utf-8  - * -   import 操作系统   import  cv2   得到skimage.measure  import  compare_ssim   import  shutil   import  datetime   def  yidong (filename1 filename2):   ,,,shutil.move (filename1 filename2)   def 删除(filename1):   ,,,os.remove (filename1)   ,,,print(& # 39;实时:& # 39;,now_now-now)   if  __name__ ==, & # 39; __main__ # 39;:   ,,,path =, " # 39; F: \ temp \ demo # 39;   ,,,#,save_path_img =, " # 39; F: \ temp \ demo_save& # 39;   ,,,#,os.makedirs (save_path_img, exist_ok=True)   ,,,for (根,,dirs,,文件),拷贝os.walk(路径):   ,,,,,,,for  dirc 拷贝dirs:   ,,,,,,,,,,,if  dirc ==, & # 39; rec_pic& # 39;:   ,,,,,,,,,,,,,,,pic_path =, os.path.join(根,,dirc)   ,,,,,,,,,,,,,,,img_path =pic_path   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

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