python图片去重

python图片去重

网上爬取图片后有很多重复的图片,本示例通过python的imagehash库对图片进行去重

  1. 导入相应的包
import os
import numpy as np
import cv2
from PIL import Image
import imagehash
  1. 生成图片的hash编码

此步骤会生成当前目录下的所有图片的hash编码值,并保存为txt文件

files = os.listdir('./')  # image path
files = np.array([file for file in files if file.endswith('jpg')])
fp = open('hash.txt', 'w')
for file in files:
    img = cv2.imread(file)
    img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    hash_code = imagehash.phash(img)
    fp.write(str(hash_code) + ' ' + file + '\n')
fp.close()
  1. 图像去重

比较图片的hash编码值用于去重

fp = open('hash.txt', 'r')
lines = fp.readlines()
lines = [line.strip().split() for line in lines]
fp.close()
for i in range(0, len(lines) - 1, 1):
    for j in range(i + 1, len(lines), 1):
        if lines[i][0] == lines[j][0]:
            print(lines[i])
            os.remove(lines[i][1])
            break


imagehash库的原理请参考:
imagehash(CSDN)
imagehash(github)

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值