首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

python imagehash库简单运用

支持以下功能: 平均哈希(ahash) 感知哈希phash) 差异哈希(dhash) 小波哈希(whash) HSV 颜色哈希(colorhash) 抗剪切哈希(crop-resistant hashing...不幸是,我们不能在实现中使用加密哈希算法。由于加密散列算法性质,输入文件中微小更改将导致本质上不同散列。在图像指纹情况下,我们实际上希望相似的输入也有相似的输出散列。...(phash/ahash/dhash/小波hash) perception hashing 感知哈希不同于aHash,但首先它确实是离散余弦变换和频域。...hash_size * highfreq_factor hash_size代表最终返回hash数值长度 highfreq_factor,代表resize尺度 案例: highfreq_factor...流行DCT和傅立叶变换使用余弦函数作为sin\cos基础:sin(x),sin(2x),sin(3x)等等。与此相反,DWT使用一个单一功能作为基础,但在不同形式:缩放和移动。

36330

感知哈希算法计算图像相似度

实现图片相似度比较哈希算法有三种:均值哈希算法,差值哈希算法,感知哈希算法下文简单介绍感知哈希算法,其他算法等后续文档再述。...感知哈希算法是一个比均值哈希算法更为健壮一种算法,与均值哈希算法区别在于感知哈希算法是通过DCT(离散余弦变换)来获取图片低频信息。...经过DCT变换后系数矩阵从左上角到右下角频率越来越高,因此图片能量主要保留在左上角低频系数上了。具体步骤:(1)缩小尺寸:pHash以小图片开始,但图片大于8x8,32x32是最好。...os.path.dirname(os.path.dirname(__file__))# Hash值对比def cmpHash(hash1, hash2,shape=(10, 10)): n = 0 # hash长度不同返回...(pHash)def pHash(img,shape=(10,10)): # 缩放32*32 img = cv2.resize(img, (115, 114)) # , interpolation

1.2K50

python图像识别---------图片相似度计算

感知哈希算法是一类算法总称,包括aHash、pHash、dHash。顾名思义,感知哈希不是以严格方式计算Hash值,而是以更加相对方式计算哈希值,因为“相似”与否,就是一种相对判定。...几种hash值比较: aHash:平均值哈希。速度比较快,但是常常不太精确。 pHash:感知哈希。精确度比较高,但是速度方面较差一些。 dHash:差异值哈希。精确度较高,且速度也非常快 1....(pHash): 均值哈希虽然简单,但是受均值影响大。...差异值哈希算法(dHash): 相比pHash,dHash速度要快多,相比aHash,dHash在效率几乎相同情况下效果要更好,它是基于渐变实现。...计算哈希值差异 # 计算两个哈希值之间差异 def campHash(hash1, hash2): n = 0 # hash长度不同返回-1,此时不能比较 if len(hash1

10.9K41

python︱imagehash中四种图像哈希方式(phashahashdhash小波hash)

可以直接pip: pip install imagehash 1 perception hashing 感知哈希不同于aHash,但首先它确实是离散余弦变换和频域。...主函数:def phash(image, hash_size=8, highfreq_factor=4): 两个参数,一起决定了图片resize大小,最适合才最好,按照公式: img_size...= hash_size * highfreq_factor hash_size代表最终返回hash数值长度 highfreq_factor,代表resize尺度 案例: highfreq_factor...流行DCT和傅立叶变换使用余弦函数作为sin\cos基础:sin(x),sin(2x),sin(3x)等等。与此相反,DWT使用一个单一功能作为基础,但在不同形式:缩放和移动。...它工作原理在频域中作为pHash但它使用DWT代替DCT变换。

7.9K81

广告行业中那些趣事系列39:实战广告场景中图片相似度识别任务

除了上面广告场景中应用,图片相似度识别任务还出现在很多应用场景中,比如google提供“相似图片搜索”服务。google支持用户输入一张图片或者图片地址,返回和这张图片相似的图片。...02 基于phash算法图片相似度识别 2.1 当前基于phash算法获取图片素材指纹 当前我们解决图片相似度识别任务主要是基于phash(感知哈希算法,Perceptual hash algorithm...从广告素材中先选择三张不同图片1.jpg、2.jpg和3.jpg。...下面是各种不同情况相似度得分: 当两张图片完全一样时(image_1=image_2=22.jpg)相似度为1,因为是完全相同图片,所以得分是最高; 当两张完全不同素材图片时(image_1=22...下面给出phash算法源码: # func:根据phash算法获取哈希值 # PIL:Python Imaging Library,已经是Python平台事实上图像处理标准库了。

78230

图片相似检测:三行代码实现

背景 检查两个图片相似度,一个简单而快速算法:感知哈希算法(Perceptual Hash),通过某种提取特征方式为每个图片计算一个指纹(哈希),这样对比两个图片相似与否就变成了对比两个指纹异同问题...实现 Step1.缩小尺寸 将图片缩小到8*8大小,这样做可以去除图片细节,只保留结构和明暗等基本信息,同时摒弃不同尺寸和比例带来图片差异。...Step4.计算哈希 这里哈希计算方法是:上面说64个像素灰度与平均值进行比较,大于或等于平均值记为1,小于记为0。...将每个像素比较结果组合在一起成为一个64位二进制整数,这个整数就是此图片指纹。 Step5.对比哈希 不同图片对比方法,就是对比它们64位哈希中,有多少位不一样(汉明距离)。...一般来说如果不同位数不超过5,就说明两张图片很相似,如果大于10,就很可能是两张不同图片。

2.3K50

MyBatis 封装Map,返回不同实体集合对象

,然后通过resultType一一对应实体类,这种方式简直...   2.我们不通过创建实体类,来获得一个表中所有数据,或者部分数据键值对形式值,我们该怎么做?...原因是,当我们resultType写成一个实体类时候,MyBatis首先会找这个实体类里面的字段,然后根据字段进行映射, 但是我们Object对象它里面有字段吗???...------------------------------------------------------------------- 像这种想要返回实体类东西我们还得借助Map<String,Object...String就相当于实体类里面的具体属性字段,而Object就是存储值 所以我们写法应该是这样 /*   Warning:     这里边如果是要获取多个值的话就必须写成List<Map<String...集合嵌套Map值了。

2.2K20

相似性︱python+opencv实现pHash算法+hamming距离(simhash)(三)

. 2、感知哈希算法(pHash) 节选自: 图像检索︱图像相似性搜索与图像向量化、哈希化(文献、方法描述) 平均哈希算法过于严格,不够精确,更适合搜索缩略图,为了获得更精确结果可以选择感知哈希算法...最后比对两张图片指纹,获得汉明距离即可。 这等同于”汉明距离”(Hamming distance,在信息论中,两个等长字符串之间汉明距离是两个字符串对应位置不同字符个数)。...如果不相同数据位数不超过5,就说明两张图像很相似;如果大于10,就说明这是两张不同图像。 ....得到哈希值之后,需要求距离,这里较多使用海明距离(来源)。 这等同于”汉明距离”(Hamming distance,在信息论中,两个等长字符串之间汉明距离是两个字符串对应位置不同字符个数)。...如果不相同数据位数不超过5,就说明两张图像很相似;如果大于10,就说明这是两张不同图像。

4.5K50

图片相似度识别:pHash算法

前面已经整理了aHash和dHash算法原理和python代码(戳:图片相似度识别:aHash算法,图片相似度识别:dHash算法),今天来介绍hash三兄弟最后一个——pHash。...1 pHash算法 pHash中文叫感知哈希算法,通过离散余弦变换(DCT)降低图片频率,相比aHash有更好鲁棒性。 基本原理: 缩小尺寸。将图片缩小为32*32大小。 灰度化处理。...DCT是一种特殊傅立叶变换,将图片从像素域变换为频率域,并且DCT矩阵从左上角到右下角代表越来越高频率系数,但是除左上角外,其他地方系数为0或接近0,因此只保留左上角低频区域。...f(i)为原始信号,F(u)是DCT变换后系数,N为原始信号点数,c(u)是补偿系数。 二维DCT变换公式: ? 二维变换是在一维变换基础上得来,并且上述公式可以转化为 ?...3 优缺点 pHash相对aHash鲁棒性更好,但速度会略慢。从上述例子也可以看出,用不同方法最后相似度数值不同,因此在实际应用中还需结合实际效果不断调整确定阈值。

6.6K10

以图搜图:Python实现dHash算法

这个功能最核心东西就是怎么让电脑识别图片。 这个问题也是困扰了我,在偶然机会,看到哈希感知算法。这个分两种,一种是基本均值哈希感知算法(dHash),一种是余弦变换哈希感知算法(pHash)。...dHash是我自己命名,为了和pHash区分。...这样就剩下一个长度为16字符串。这个字符串也就是这个图片可识别的哈希值。...(汉明距离是两个字符串对应位置对比,总共不同个数) 很明显,旋转了90度汉明距离变得很大。在dHash算法中,它们是不同。而我们肉眼可以看出其实是一样。前面说过dHash算法比较较真、比较敏感。...若要处理一定程度变形,得要调整一下这个算法。 pHash算法就是基于dHash算法调整而来,用第一次计算得到值进行余弦变换。所以命名为余弦哈希感知算法。它可以识别变形程度在25%以内图片。

1.5K20

基于Python实现图像去重

使用哈希算法进行图像去重 哈希算法是一种非常常用去重算法,通过对图片进行哈希计算,得到一个指纹,再通过比较指纹方式找到相似的图片。...).count("1") 使用局部敏感哈希算法进行图像去重 局部敏感哈希算法(LSH)可以更加精确地比较两张图片相似度,以达到更好去重效果。...感知哈希算法(pHash)是一种比较复杂哈希算法,它考虑了图片颜色、纹理、边缘等因素,因此可以更加精确地比较两张图片相似度。...(img2) #比较哈希值 print(hash1 - hash2) 总结 本文介绍了Python图像去重三种方法,分别是哈希算法、局部敏感哈希算法和感知哈希算法。...if __name__ == '__main__': path = r'D:\data\img_dir' all_files = list_all_files(path) # 返回包含完整路径所有图片名列表

61530

多个套接字可以绑定同一个端口吗

在日常开发过程中,经常会遇到端口占用冲突问题。那是不是不同进程不能同时监听同一个端口呢?这个小节就来介绍 SO_REUSEPORT 选项相关内容。 通过阅读这个小节,你会学到如下知识。...惊群问题带来是 CPU 资源浪费和锁竞争开销。根据使用方式不同,Linux 上网络惊群问题分为 accept 惊群和 epoll 惊群两种。...,可以看到监听 9090 端口是两个不同 socket,它们 inode 号分别是 2168508 和 2168453。...监听端口号经过哈希算法运算打散到这些哈希桶中,相同哈希端口采用拉链法解决冲突。...,这个函数返回 [0-31] 之间值 unsigned int hash = inet_lhashfn(net, hnum); // 根据哈希槽位得到当前 LISTEN 套接字链表 struct

2.5K20

长度为 3 不同回文子序列(计数)

题目 给你一个字符串 s ,返回 s 中 长度为 3 不同回文子序列 个数。 即便存在多种方法来构建相同子序列,但相同子序列只计数一次。 回文 是正着读和反着读一样字符串。...示例 1: 输入:s = "aabca" 输出:3 解释:长度为 3 3 个回文子序列分别是: - "aba" ("aabca" 子序列) - "aaa" ("aabca" 子序列) - "aca..." ("aabca" 子序列) 示例 2: 输入:s = "adc" 输出:0 解释:"adc" 不存在长度为 3 回文子序列。...示例 3: 输入:s = "bbcbaba" 输出:4 解释:长度为 3 4 个回文子序列分别是: - "bbb" ("bbcbaba" 子序列) - "bcb" ("bbcbaba" 子序列)...解题 对每个字符左右字符进行计数 遍历中间字符,同时查找左右两侧26个字符是否都存在 两侧都存在则将字符串编码成26进制数存入哈希set,最后返回哈希个数 class Solution { public

89120

300行ABAP代码实现一个最简单区块链原型

在这个版本里,每个区块包含了最基本字段:块索引,块创建时间戳,当前块哈希值(hash)和前一块哈希值。每个区块pHash字段存储了前一块哈希值,这样就构成了一个链表。...链表第一个节点,就是下图最左边红色抬头区块为创世块,其索引为0,pHash字段为空。 [1240] 区块ABAP实现:ZCL_BLOCK。...CONSTRUCTOR: 构造函数,执行链初始化操作,创建创世块区块。 GET_BLOCK_BY_INDEX: 根据索引访问指定区块。 GET_SIZE: 返回链里包含区块数量。...这样第一个区块哈希发生了变化(假设从YYY变到了CCC),而第二个区块pHash仍然指向第一个区块变化之前哈希值YYY,因此这个区块链被判定为无效。...[1240] [1240] 上图输出来自校验方法is_valid: 遍历链里每个区块,比较区块里存储前一区块哈希字段pHash和位于该区块前一个位置区块哈希值是否一致。

1.2K50

算法创作|力扣题—返回不重复字符最长字串长度

给定一个字符串,请你找出其中不含有重复字符最长子串长度。 示例 1:输入: "abcabcbb" 输出: 3 解释: 因为无重复字符最长子串是 "abc",所以其长度为 3。...示例 2:输入: "bbbbb" 输出: 1 解释: 因为无重复字符最长子串是 "b",所以其长度为 1。 解决方案 对于本道题,题意很简单,“不重复”和“最长字串”抓住这两个关键字眼。...所以在一串给定得字符串中,通过循环方式让后面和前面的字符进行对比。对于无顺序比较,这里我们采用set()函数,无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。...最后将不重复字符串用len()函数进行计算长度。在一系列过程中用到了for循环,if条件语句,sorted()函数。 接下来展示完整代码。...图2.1 结语 对于本次这个题目,在于循环使用和条件语句,一些缩进注意,缩进容易导致很多错误,还有就是本题用到函数比较多,所以要很好利用好每一个函数。

40820
领券