python中如何删除相似的图片?这两个方法非常好用

Python是非常便捷的一门语言,它可以实现少量代码解决复杂事件,那么今天小编就给大家分享一个python中删除相似的图片的方法,如果感兴趣的小伙伴可以仔细阅读一下这篇文章 。

python中如何删除相似的图片?这两个方法非常好用

文章插图
方法一:首先比较相邻两个文件的相似度,这两个文件相似就把第二个加到新列表里,然后进行新列表去重,统一删除 。
例如:有文件1-10,首先1和2相比较,若相似,则把2加入到新列表里,再接着2和3相比较,若不相似,则继续进行3和4比较...一直比到最后,然后删除新列表里的图片
代码如下:
#!/usr/bin/env python# -*- coding: utf-8 -*- # @Time    : 2019/1/15 9:19 # @Author  : xiaodai import os import cv2 from 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       est ec_pic'     # save_path_img = r'E:?115_test ec_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)方法二:逐个去比较,若相似,则从原来列表删除,添加到新列表里,若不相似,则继续

推荐阅读