感知哈希算法 python 3.4
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#Less than 10 add to list and sort
import glob
import os
import sys
from functools import reduce
from PIL import Image EXTS = 'jpg', 'jpeg', 'JPG', 'JPEG', 'gif', 'GIF', 'png' def avhash(im):
if not isinstance(im, Image.Image):
im = Image.open(im)
if im.mode=='RGBA':
im=ConvertRBGA(im)
im = im.resize((8, 8), Image.ANTIALIAS).convert('L')
avg = reduce(lambda x, y: x + y, im.getdata()) / 64.0
return reduce(lambda x, y_z: x | (y_z[1] << y_z[0]), enumerate(map(lambda i: 0 if i < avg else 1, im.getdata())), 0) def hamming(h1, h2):
h, d = 0, h1 ^ h2
while d:
h += 1
d &= d - 1
return h def ConvertRBGA(img):
x,y = img.size
# # (alpha band as paste mask).
p = Image.new('RGBA', img.size, (255,255,255))
p.paste(img, (0, 0, x, y),img)
return p if __name__ == '__main__':
#if len(sys.argv) <= 1 or len(sys.argv) > 3:
# print ("Usage: %s image.jpg [dir]" % sys.argv[0])
#else:
# im, wd = sys.argv[1], '.' if len(sys.argv) < 3 else sys.argv[2]
im, wd = 'gs6.png', '.' if len(sys.argv) < 3 else sys.argv[2]
h = avhash(im)
os.chdir(wd);
images = []
for ext in EXTS:
images.extend(glob.glob('*.%s' % ext)) seq = []
prog = int(len(images) > 50 and sys.stdout.isatty())
for f in images:
result=avhash(f)
seq.append((f, hamming(result, h)))
if prog:
perc = 100. * prog / len(images)
x = int(2 * perc / 5)
print ('\rCalculating... [' + '#' * x + ' ' * (40 - x) + ']'),
print ('%.2f%%' % perc, '(%d/%d)' % (prog, len(images))),
sys.stdout.flush()
prog += 1 if prog: print
for f, ham in sorted(seq, key=lambda i: i[1]):
print ("%d\t%s" % (ham, f))
感知哈希算法 python 3.4的更多相关文章
- 感知哈希算法——Python实现【转】
转自:https://blog.csdn.net/m_buddy/article/details/78887248 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...
- 感知哈希算法的java实现
一.原理讲解 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹 ...
- 谷歌百度以图搜图 "感知哈希算法" C#简单实现
/// <summary> /// 感知哈希算法 /// </summary> public class ImageComparer { /// <summary> ...
- Iconfinder 如何杜绝盗版,哈希算法检测图像重复
原地址:http://blog.jobbole.com/65914/ 本文由 伯乐在线 - 小鱼 翻译自 Silviu Tantos.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. [伯乐在线导读 ...
- 压缩感知重构算法之IRLS算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之OLS算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之CoSaMP算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之IHT算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
- 压缩感知重构算法之SP算法python实现
压缩感知重构算法之OMP算法python实现 压缩感知重构算法之CoSaMP算法python实现 压缩感知重构算法之SP算法python实现 压缩感知重构算法之IHT算法python实现 压缩感知重构 ...
随机推荐
- 解决vs2013下创建的python文件,到其他平台(如linux)下中文乱码(或运行时报SyntaxError: (unicode error) 'utf-8' codec can't decode byte...)
Vs2013中创建python文件,在文件中没输入中文时,编码为utf-8的,如图 接着,在里面输入几行中文后,再次用notepad++查看其编码如下,在vs下运行也报错(用cmd运行就不会): 根据 ...
- Metrics-Java版的指标度量工具
介绍 Metrics是一个给JAVA服务的各项指标提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控,同时,Metrics能够很好的跟Ganlia.Gra ...
- 华硕笔记本进pe之前的设置
1.开机的时候长按F2键进入BIOS界面,通过方向键进[Secure]菜单,通过方向键选择[Secure Boot Control]选项,将其设定为 "Disabled"2.通过方 ...
- spark MLLib的基础统计部分学习
参考学习链接:http://www.itnose.net/detail/6269425.html 机器学习相关算法,建议初学者去看看斯坦福的机器学习课程视频:http://open.163.com/s ...
- easyui datagrid分页
datagrid分页设置 pagination="true" 貌似是不行的! 只是显示分页工具栏 没有达到分页效果 前端 $(function (){ var p = $('#d ...
- portal安装常见问题
1.创建portaladmin的url? https://portal.smart.ningbo:7443/arcgis/home/createadmin.html 2.创建portaladmin一闪 ...
- Webdriver其他定位方式
1.下拉框的定位 在遇到select下拉框的选择时,比如: <select id="nr" name="NR"> <option select ...
- iOS 解决文本(uitextfield/uitextView)在中间显示而不在顶部显示 问题
在对应的控制器中设置下面属性 self.automaticallyAdjustsScrollViewInsets = NO; 这样就好了.
- Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能
这篇文字将要学习以下知识点: 1.如何给JButton按钮添加鼠标点击事件监听器 #1.addMouseListener(MouseListener l) 给JButton添加一个鼠标点击监听器l ...
- My Sql多表操作(转载)
DELETE 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Pr ...