介绍

每张图片都有一个唯一性的指纹。就好像人类的指纹可以识别出这个人类似。

图片指纹是什么?(图片哈希)

用图片指纹进行相似图片的检测。这种技术通常被称为“感知图像hash”或是简单的“图片hash”。

图片hash是检测一张图片的内容然后根据检测的内容为图片建立一个唯一值的过程。

比如,给定一张图片作为输入,应用一个hash函数,然后基于图片的视觉计算出一个图片hash。相似的图片也应当有相似的hash值。

将会使用“差别Hash”或简单的DHash算法计算图片指纹。简单来说,DHash算法着眼于两个相邻像素之间的差值。然后,基于这样的差值,就建立起一个hash值了。

为什么不使用md5,sha-1等算法?

我们不能在实现中使用加密hash算法。由于加密hash算法的本质使然,输入文件中非常微小的差别也能造成差异极大的hash值。我们实际上希望相似的输入可以有相似的hash输出值。

安装相关库

pip install Pillow

pip install ImageHash

pip install numpy

pip install scipy

开始使用

获取图片指纹

from PIL import Image

import imagehash

# 给一张图片

img1 = Image.open('images/demo4.jpg')

res = imagehash.dhash(img1) # 4f999cc90979704c

计算汉明距离

汉明距离被用于计算一个哈希中的不同位数。因此,哈希中只有一位不同的两张图片自然比有10位不同的图片更相似。

全部代码

from PIL import Image

import imagehash

def img(img_path):

"""

图片哈希(类似:4f999cc90979704c)

:param img_path: 图片路径

:return:

"""

img1 = Image.open(img_path)

res = imagehash.dhash(img1)

return res

def hamm_img(res1, res2):

"""

汉明距离,汉明距离越小说明越相似,等 0 说明是同一张图片,大于10越上,说明完全不相似

:param res1:

:param res2:

:return:

"""

str1 = str(res1) # 转成 str

str2 = str(res2)

num = 0 # 用来计算汉明距离

for i in range(len(str1)):

if str1[i] != str2[i]:

num += 1

return num

if __name__ == '__main__':

img_path1 = 'images/demo1.jpg'

img_path2 = 'images/demo2.jpg'

res = hamm_img(img(img_path1), img(img_path2))

print('汉明距离是:', res)

python指纹识别_python之图片指纹(唯一性的)相关推荐

  1. python指纹识别_python实现CMS指纹识别

    #coding=utf-8 import requests import json url=raw_input(unicode("请输入要识别的url地址:","utf- ...

  2. 指纹识别综述(6): 现场指纹识别

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

  3. h5调用指纹识别_基于HTML Canvas实现“指纹识别”技术,canvas指纹

    基于HTML Canvas实现"指纹识别"技术,canvas指纹 作者:zhanhailiang 日期:2015-01-31 说明 所谓指纹识别是指为每个设备标识唯一标识符(以下简 ...

  4. 计算机指纹识别的原理步骤,指纹识别原理和过程

    指纹识别概念 指纹识别是生物识别的一种.不过其所分析的对象是指纹特征.指纹特征是最早被发现和应用的,所以指纹识别的历史较之其它识别技术要悠久的多.出现自动化的指纹识别系统到现在,目前的指纹识别技术已经 ...

  5. 安卓系统的指纹解锁_安卓全面屏都用的屏幕下指纹识别,科普超声波指纹识别的原理...

    指纹识别可以说是苹果一手带热的,虽然苹果将指纹识别普及推广,但是随着iPhoneX的发布指纹识别和home一样消失了.不过目前大部分的安卓手机,都是采用了屏幕下指纹识别.在全面屏上,安卓走得比苹果iP ...

  6. 【指纹识别】基于matlab指纹图像细节特征提取 【含Matlab源码 227期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[指纹识别]基于matlab指纹图像细节特征提取 [含Matlab源码 227期] (https://download.csdn.net/d ...

  7. python指纹识别_python安全编程之指纹识别

    什么是cms CMS是Content Management System的缩写,意为"内容管理系统",这是百度百科的解释,意思是相当于网站的建站模板,整个网站架构已经集成好了,只需 ...

  8. python读取视频流做人脸识别_python实现图片,视频人脸识别(opencv版)

    图片人脸识别 import cv2 filepath = "img/xingye-1.png" img = cv2.imread(filepath) # 读取图片 gray = c ...

  9. ios与android指纹识别,iOS开发swift -- 指纹识别

    //导入类库 import LocalAuthentication func touchID() { //创建上下文 let context = LAContext() var error : NSE ...

最新文章

  1. Dvtm -- 平铺式终端
  2. python 报错 too many values to unpack (expected 3) 的解决方案
  3. nginx 知识点 :ctx_index and index
  4. scala学习笔记-Map与Tuple(10)
  5. OSPF的LSA类型 ——连载五自治系统外部的LSA
  6. excel数据平均分配给多人_excel表格 怎样均分数据-用Excel怎么才能将组数据平均分配给几个人...
  7. 618 技术特辑(二)几百万人同时下单的秒杀,为什么越来越容易抢到了?
  8. TokenInsight:BTC全网流量逐级上升,链上活跃度环比上周大幅回升
  9. 8421转换法可以轻松实现各进制之间的转换
  10. 批处理命令——for
  11. IT忍者神龟之Java动态代理与CGLib代理
  12. MAC的编译更严格一些
  13. 传智播客 python 私有化学习笔记
  14. 知识图谱构建技术总述
  15. 不知道怎么压缩图片大小?分享2个压缩小技巧
  16. 火星坐标 C语言,坐标
  17. Axure原型设计灯箱效果
  18. linux脚本自动验证,一个无需交互,批量自动连接ssh执行命令的工具(免rsa密钥指纹验证)...
  19. 微信小程序-异步请求变同步请求
  20. 魅蓝note2手机计算机打开教程,魅族 魅蓝note2 开启USB调试模式

热门文章

  1. 太极安装的应用打开闪退_BUG:通过太极阴创建应用什么值得买的过程中太极闪退,应用创建失败...
  2. java中的相对路径和绝对路径,获取一个文本上每个字符出现的次数
  3. github排版混乱
  4. vmware虚拟机连接usb,显示:无法识别的usb设备,跟这台计算机连接的前一个usb设备工作不正常
  5. SpringCloudGateway路由定义存至Mysql数据库
  6. STM32单片机使用W5500作为http server通过网页进行配参(一.使用VScode模拟试验)
  7. PspTerminateProcess 结束冰刃进程
  8. KSO-vue创建项目以及安装npm与node
  9. python 二进制流长度_python怎么处理二进制流
  10. 英文学习20180410