本文实例讲述了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实现根据图标提取分类应用程序实例相关推荐

  1. python中中文图标_python中中文图标_matplotlib同时显示中文和特殊符号

    Matplotlib中文显示问题--用例子说明问题 #-*- coding: utf-8 -*- from pylab import * t = arange(-4*pi, 4*pi, 0.01) y ...

  2. python模拟高并发_Python基于gevent实现高并发代码实例

    gevent是python的协程模块,协程可以理解成更轻量化的线程.因为性能测试工具的一些限制,就自己萌发了自己写性能测试工具的念想,当然,写的比较简单,比如缺少性能指标的收集,慢慢的优化 出来,这个 ...

  3. python的id方法_python中id()函数的实用研究实例

    python中id()函数的实用研究实例 >>> a = 2.5 >>> b = 2.5 >>> c = b >>> a is ...

  4. python去重复行_python去除文件中重复的行实例

    python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...

  5. python功能性爬虫案例_Python使用requests及BeautifulSoup构建爬虫实例代码

    本文研究的主要是Python使用requests及BeautifulSoup构建一个网络爬虫,具体步骤如下. 功能说明 在Python下面可使用requests模块请求某个url获取响应的html文件 ...

  6. python怎么处理数据_python中scrapy处理项目数据的实例分析

    在我们处理完数据后,习惯把它放在原有的位置,但是这样也会出现一定的隐患.如果因为新数据的加入或者其他种种原因,当我们再次想要启用这个文件的时候,小伙伴们就会开始着急却怎么也翻不出来,似乎也没有其他更好 ...

  7. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  8. python收取wss数据_Python金融应用之提取交易日+合并截面数据

    NO.160 2020.07.15 工欲善其事,必先利其器 // - 前言 - ◆ ◆ ◆ ◆ 今天,小咖来讲讲如何利用Python提取最近交易日.前一周交易日.前一月交易日.前一季度交易日等,并提取 ...

  9. python解析html模块_Python HTMLParser模块解析html获取url实例

    HTMLParser是python用来解析html的模块.它可以分析出html里面的标签.数据等等,是一种处理html的简便途径.HTMLParser采用的是一种事件驱动的模式,当HTMLParser ...

最新文章

  1. .data和.text段合并
  2. eclipse中搭建ssm框架
  3. python leetcode_python实现leetcode中无重复字符的最长字串
  4. Python提取数字图片特征向量
  5. C++语言string类介绍和示例
  6. 阿里布局无人驾驶;滴滴成立汽车服务;“京东 AI 天团”首亮相| CSDN极客头条...
  7. 宏杉科技高端存储再获认可 成功中标国家电网集采
  8. C语言自学之路二(C语言数据类型)
  9. java中bitconverter_BitConverter.GetBytes 方法以什么顺序返回字节数组
  10. 写给夏燕第十一个男人
  11. VS Code写C语言输出long double类型数据不正确的问题
  12. redis_主从复制搭建
  13. 正负数在计算机中的存储方式
  14. PC微信3.7.0将本地文件从MsgAttach文件夹转移回原先的File文件夹
  15. 航班管理系统-机票预订
  16. 财务自由?这样做微信开发可以吗?
  17. 稀疏矩阵的存储方法(DOK、LIL、COO、CSR, CRS)
  18. QGIS软件安装和汉化
  19. 投研报告 -用DEX技术链改投注网站的项目Betswap($BSGG)
  20. es文件管理器怎么运行html,es文件浏览器,教您如何使用es文件浏览器连接计算机...

热门文章

  1. MySQL 常用运算符
  2. python基础入门(1)
  3. etcd 启动分析_Etcd 架构与实现解析
  4. 我的Go+语言初体验——(5)Go+ 基本语法之 Switch
  5. dax 筛选 包含某个字_筛选状态(ALL与REMOVEFILTERS)
  6. 美国计算机科学联赛获奖,【竞赛获奖】西安高新一中国际班学子在2018-2019美国计算机科学联赛 (ACSL)积分赛中创造历史!...
  7. python 伪造源ip_Swaks伪造邮件
  8. opencv4-图像操作
  9. android 启动优化方案,Android 项目优化(五):应用启动优化
  10. Android开发环境配置介绍