python 删除文件夹中相似图片

        很多同学兴许有这样的烦恼,就是对于自己文件夹中的相似的图片想删除,可是奈何图片太多,所以手动删除太浪费时间了,那么今天学到这段代码,就不需要手动了。

        如下是我对视频截取的一些帧,我通过算法将这些相似的图片删除,得到一些不一样的帧。

这是结果前:

python 删除文件夹中相似图片_第1张图片

 python 删除文件夹中相似图片_第2张图片

这是通过删除相似图片后的的结果


import os
import cv2
from skimage.measure import compare_ssim
# import shutil

def delete(filename1):#删除不想要的图片
    os.remove(filename1)
if __name__ == '__main__':
    #delete(r"D:\PycharmProjects\pythonProject\feiji\video_frames\5e062f3bd4040e480536f8f4708f388b.mp4\frame.128000.png")
    dir_path=r"D:\PycharmProjects\pythonProject\feiji\video_frames\5e062f3bd4040e480536f8f4708f388b.mp4"
    image_path=[]
    image_files=os.listdir(dir_path)
    image_files.sort(key=lambda x:int(x.split('.')[1]))#用于进行文件排序,可以根据自己的文件命名来更改代码
    print(image_files)
    for image_file in image_files:
        image_path.append(os.path.join(dir_path,image_file))
    print(image_path)
    image_0 = cv2.imread(image_path[0])
    image_0_simp=image_0[:,:,0]
    print(image_0_simp.sum())
    for image in image_path[1:]:
        image_1=cv2.imread(image)
        image_1_simp=image_1[:,:,0]
        # cv2.imshow("111",image_1_simp)
        # cv2.waitKey(0)
        ssim = compare_ssim(image_0_simp, image_1_simp, multichannel=True)
        print(ssim)
        if ssim>0.85:
            delete(image)
        else:
            image_0 = cv2.imread(image)
            image_0_simp = image_0[:, :, 0]

这个效果还是不错的,可以通过阈值来进行更改。 

你可能感兴趣的:(python,开发语言,计算机视觉,深度学习)