python的应用图标_python实现根据图标提取分类应用程序实例
本文实例讲述了python实现根据图标提取分类应用程序,分享给大家供大家参考。
具体方法如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import Image
import win32ui
import win32gui
def make_regalur_image(img, size = (256, 256)):
return img.resize(size).convert(‘RGB‘)
def split_image(img, part_size = (64, 64)):
w, h = img.size
pw, ph = part_size
assert w % pw == h % ph == 0
return [img.crop((i, j, i+pw, j+ph)).copy() for i in xrange(0, w, pw) for j in xrange(0, h, ph)]
def hist_similar(lh, rh):
assert len(lh) == len(rh)
return sum(1 - (0 if l == r else float(abs(l - r))/max(l, r)) for l, r in zip(lh, rh))/len(lh)
def calc_similar(li, ri):
# return hist_similar(li.histogram(), ri.histogram())
return sum(hist_similar(l.histogram(), r.histogram()) for l, r in zip(split_image(li), split_image(ri))) / 16.0
def calc_similar_by_path(lf, rf):
li, ri = make_regalur_image(Image.open(lf)), make_regalur_image(Image.open(rf))
return calc_similar(li, ri)
def make_doc_data(lf, rf):
li, ri = make_regalur_image(Image.open(lf)), make_regalur_image(Image.open(rf))
li.save(lf + ‘_regalur.png‘)
ri.save(rf + ‘_regalur.png‘)
fd = open(‘stat.csv‘, ‘w‘)
fd.write(‘\n‘.join(l + ‘,‘ + r for l, r in zip(map(str, li.histogram()), map(str, ri.histogram()))))
# print >>fd, ‘\n‘
# fd.write(‘,‘.join(map(str, ri.histogram())))
fd.close()
import ImageDraw
li = li.convert(‘RGB‘)
draw = ImageDraw.Draw(li)
for i in xrange(0, 256, 64):
draw.line((0, i, 256, i), fill = ‘#ff0000‘)
draw.line((i, 0, i, 256), fill = ‘#ff0000‘)
li.save(lf + ‘_lines.png‘)
def getIcon(filename):
large, small = win32gui.ExtractIconEx(filename,0)#
win32gui.DestroyIcon(small[0])
hdc = win32ui.CreateDCFromHandle( win32gui.GetDC(0) )
hbmp = win32ui.CreateBitmap()
hbmp.CreateCompatibleBitmap( hdc, 32, 32 )
hdc = hdc.CreateCompatibleDC()
hdc.SelectObject( hbmp )
hdc.DrawIcon( (0,0), large[0] )
hbmp.SaveBitmapFile( hdc, "save.bmp" )
if __name__ == ‘__main__‘:
#path = r‘test/TEST%d/%d.JPG‘
for i in range(1,4):
getIcon(r‘test/TEST1/%d.exe‘ % i)
print ‘RESULT:%d‘ % (calc_similar_by_path(‘save.bmp‘,r"test/TEST1/backup.bmp")*100)
#for i in xrange(1, 7):
#print ‘test_case_%d: %.3f%%‘%(i, \
#calc_similar_by_path(‘test/TEST%d/%d.JPG‘%(i, 1), ‘test/TEST%d/%d.JPG‘%(i, 2))*100)
# make_doc_data(‘test/TEST4/1.JPG‘, ‘test/TEST4/2.JPG‘)
希望本文所述对大家的Python程序设计有所帮助。
原文:http://www.jb51.net/article/55742.htm
python的应用图标_python实现根据图标提取分类应用程序实例相关推荐
- python中中文图标_python中中文图标_matplotlib同时显示中文和特殊符号
Matplotlib中文显示问题--用例子说明问题 #-*- coding: utf-8 -*- from pylab import * t = arange(-4*pi, 4*pi, 0.01) y ...
- python模拟高并发_Python基于gevent实现高并发代码实例
gevent是python的协程模块,协程可以理解成更轻量化的线程.因为性能测试工具的一些限制,就自己萌发了自己写性能测试工具的念想,当然,写的比较简单,比如缺少性能指标的收集,慢慢的优化 出来,这个 ...
- python的id方法_python中id()函数的实用研究实例
python中id()函数的实用研究实例 >>> a = 2.5 >>> b = 2.5 >>> c = b >>> a is ...
- python去重复行_python去除文件中重复的行实例
python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...
- python功能性爬虫案例_Python使用requests及BeautifulSoup构建爬虫实例代码
本文研究的主要是Python使用requests及BeautifulSoup构建一个网络爬虫,具体步骤如下. 功能说明 在Python下面可使用requests模块请求某个url获取响应的html文件 ...
- python怎么处理数据_python中scrapy处理项目数据的实例分析
在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好 ...
- python生成表格文件_python 读取excel文件生成sql文件实例详解
python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...
- python收取wss数据_Python金融应用之提取交易日+合并截面数据
NO.160 2020.07.15 工欲善其事,必先利其器 // - 前言 - ◆ ◆ ◆ ◆ 今天,小咖来讲讲如何利用Python提取最近交易日.前一周交易日.前一月交易日.前一季度交易日等,并提取 ...
- python解析html模块_Python HTMLParser模块解析html获取url实例
HTMLParser是python用来解析html的模块.它可以分析出html里面的标签.数据等等,是一种处理html的简便途径.HTMLParser采用的是一种事件驱动的模式,当HTMLParser ...
最新文章
- .data和.text段合并
- eclipse中搭建ssm框架
- python leetcode_python实现leetcode中无重复字符的最长字串
- Python提取数字图片特征向量
- C++语言string类介绍和示例
- 阿里布局无人驾驶;滴滴成立汽车服务;“京东 AI 天团”首亮相| CSDN极客头条...
- 宏杉科技高端存储再获认可 成功中标国家电网集采
- C语言自学之路二(C语言数据类型)
- java中bitconverter_BitConverter.GetBytes 方法以什么顺序返回字节数组
- 写给夏燕第十一个男人
- VS Code写C语言输出long double类型数据不正确的问题
- redis_主从复制搭建
- 正负数在计算机中的存储方式
- PC微信3.7.0将本地文件从MsgAttach文件夹转移回原先的File文件夹
- 航班管理系统-机票预订
- 财务自由?这样做微信开发可以吗?
- 稀疏矩阵的存储方法(DOK、LIL、COO、CSR, CRS)
- QGIS软件安装和汉化
- 投研报告 -用DEX技术链改投注网站的项目Betswap($BSGG)
- es文件管理器怎么运行html,es文件浏览器,教您如何使用es文件浏览器连接计算机...
热门文章
- MySQL 常用运算符
- python基础入门(1)
- etcd 启动分析_Etcd 架构与实现解析
- 我的Go+语言初体验——(5)Go+ 基本语法之 Switch
- dax 筛选 包含某个字_筛选状态(ALL与REMOVEFILTERS)
- 美国计算机科学联赛获奖,【竞赛获奖】西安高新一中国际班学子在2018-2019美国计算机科学联赛 (ACSL)积分赛中创造历史!...
- python 伪造源ip_Swaks伪造邮件
- opencv4-图像操作
- android 启动优化方案,Android 项目优化(五):应用启动优化
- Android开发环境配置介绍