1.背景
公司在各城市小区的楼宇电梯中投放广告,供应商会定期反馈一些上刊报告和图片来证明确实有投放。一波图片大概在50万张上下,无法通过人手来检查这些图片是否有存在复制粘贴,鱼目混珠的情况。
2.实现方法(20191203)
- 利用图片自带的exif属性判断
- 利用文件唯一的md5文件指纹判断
- 在图片中抽取若干像素,通过rgb来判断
- 计算汉明距离。0代表相同,(0,5]代表非常相似。
A. EXIF(JPG属性)
-
说明
JPG图片都会携带拍摄的相关信息(相机牌子,型号,拍摄时间,光圈,快门等)。我们可以通过获取图片信息加以对比,用属性是否相同来判断是否是一样的图片。其中拍摄时间是比较重要的一个判断依据。
-
优点
容易获取,直接右键图片即可检查属性,方便对照。
-
缺点
- 必须原图,只有原图才携带相关信息。
- 对拍摄设备的设置要求高。比如要调好相机的时间。
- 由于某些不确定因素,相片属性可能会丢失。
- 图片属性可以随时修改。(鼠标右键修改属性)
-
主要代码
# coding:utf-8
import exifread
import tkinter as tk
from pathlib import Path
# ----相关函数解释-----
# *path(文件路径).rglob('*.扩展名')
# return 该文件路径下指定扩展名的文件的list
# *exifread.process_file(图片流, detail=False)
# return 该jpg中的属性
def get_jpgs_properties(folder_path):
ttl_jpgs_properties = [] # 存放所有图片属性的list
for jpg in Path(folder_path).rglob('*.jpg'):
jpg_dict = dict() # 存放单张图片的属性
jpg_dict['Image Path'] = jpg # 图片路径
jpg_dict['Image Name'] = jpg.name # 图片名
img = open(str(jpg), 'rb')
tags