程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

基於python和md5的相同圖片查重

編輯:Python

通過爬蟲獲取的互聯網圖片,下載下來之後有一些是重復的,人眼檢查的話費時費力,而且也很難查全。本文通過計算並比對圖片的md5值來判斷是否為重復圖片,以備後用。

MD5信息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),用於確保信息傳輸完整一致。

python代碼如下:

import os
import shutil
import hashlib
# 計算每張圖像的md5值
def compute_md5(image_path):
img = open(image_path, 'rb')
md5 = hashlib.md5(img.read())
img.close()
md5_values = md5.hexdigest()
return md5_values
# 存儲md5值的list
md5_list = []
# 存儲重復圖片的路徑
result_dir = "results"
os.makedirs(result_dir, exist_ok=True)
# 待查重圖片路徑
image_dir = "images"
image_list = os.listdir(image_dir)
for image_name in image_list:
image_path = os.path.join(image_dir, image_name)
md5 = compute_md5(image_path)
# 如果md5值已存在,則將該圖片移動到result_dir目錄下
if md5 not in md5_list:
md5_list.append(md5)
else:
print(image_name)
save_path = os.path.join(result_dir, image_name)
shutil.move(image_path, save_path)

上述代碼僅提供完全重復圖片的查重功能,對於相似圖片並不能起到查重功能,後續可加入相似度計算或特征點匹配等方法來實現相似圖片的查重。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved