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)方法二:逐个去比较,若相似,则从原来列表删除,添加到新列表里,若不相似,则继续
推荐阅读
- MySQL数据库中的into有什么用?MySQL语法into能做什么
- Python怎么从sql提取表名?这篇文章一定要看
- python如何手动输入时间?这篇文章值得阅读
- python倒排列是什么意思?这篇文章值得一看
- 京东哪个类目销量最好?如何选择京东类目?
- 京东达人直播和商家直播区别是什么?如何成京东达人?
- 京东达人直播怎么赚钱?如何成为京东达人?
- 京东直播怎么申请开通?如何做好京东直播?
- 做运营没有补单渠道怎么办?如何做好运营?
- 商家互补单需要给对方钱吗?如何操作?