def remove_simillar_image_by_ssim(path): img_list = os.listdir(path) img_list.sort() hash_dic = {} save_list = [] count_num = 0 for i in range(len(img_list)): try: img = cv2.imread(os.path.join(path, img_list[i])) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img = cv2.resize(img,(256, 256)) count_num+=1 except: continue if count_num==1: save_list.append(img_list[i]) continue elif len(save_list) <5: flag = True for j in range(len(save_list)): com_img = cv2.imread(os.path.join(path,save_list[j])) com_img = cv2.cvtColor(com_img,cv2.COLOR_BGR2GRAY) com_img = cv2.resize(com_img,(256,256)) sim = compare_ssim(img,com_img) if sim > 0.4: os.remove(os.path.join(path,img_list[i])) flag = False break if flag: save_list.append(img_list[i]) else
时间: 2024-04-16 19:24:51 浏览: 131
Aliexpress Detective|The Cheaper Finder-crx插件
这段代码使用了结构相似性指数(SSIM)来去除相似图片。SSIM是一种用于测量两幅图像结构相似度的指标。
在代码中,首先对指定路径下的图片进行排序,并创建了一个哈希表`hash_dic`和一个保存列表`save_list`。然后,通过遍历图片列表,加载、处理和调整每个图片的尺寸。
在处理每个图片时,首先判断是否为第一张图片。如果是,将其加入到保存列表中。如果不是第一张图片,则遍历保存列表中的图片,并使用`compare_ssim`函数计算当前图片与保存列表中每张图片的SSIM值。
如果找到了与当前图片相似度高于0.4的图片,就将当前图片删除。否则,将其加入到保存列表中。
需要注意的是,在代码的最后一行缺少了处理在没有相似图片时的情况,您可以根据需求进行补充。
这段代码可以帮助您通过SSIM指标去除相似图片,但需要注意SSIM阈值的选择,以及在删除图片后更新图片列表的问题。
阅读全文