python实现根据图标提取分类应用程序实例


Posted in Python onSeptember 28, 2014

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
python实现保存网页到本地示例
Mar 16 Python
python实现生命游戏的示例代码(Game of Life)
Jan 24 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
Python+Pandas 获取数据库并加入DataFrame的实例
Jul 25 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python实现微信消息防撤回功能的实例代码
Apr 29 Python
Python的互斥锁与信号量详解
Sep 12 Python
pandas 缺失值与空值处理的实现方法
Oct 12 Python
Python如何实现动态数组
Nov 02 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
Nov 04 Python
python中Lambda表达式详解
Nov 20 Python
如何在vscode中安装python库的方法步骤
Jan 06 Python
wxPython事件驱动实例详解
Sep 28 #Python
python中的多重继承实例讲解
Sep 28 #Python
python错误处理详解
Sep 28 #Python
python中实现定制类的特殊方法总结
Sep 28 #Python
python之wxPython菜单使用详解
Sep 28 #Python
python中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 #Python
python之wxPython应用实例
Sep 28 #Python
You might like
PHP 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
PHP strtr() 函数使用说明
2008/11/21 PHP
Blitz templates 最快的PHP模板引擎
2010/04/06 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
WordPress中用于检索模版的相关PHP函数使用解析
2015/12/15 PHP
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
FleaPHP框架数据库查询条件($conditions)写法总结
2016/03/19 PHP
PHP强制转化的形式整理
2020/05/22 PHP
javascript动态加载三
2012/08/22 Javascript
javascript禁用键盘功能键让右击及其他键无效
2013/10/09 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
使用axios实现上传图片进度条功能
2017/12/21 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
vue 使用element-ui中的Notification自定义按钮并实现关闭功能及如何处理多个通知
2019/08/17 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
python实现类似ftp传输文件的网络程序示例
2014/04/08 Python
Python实现简单字典树的方法
2016/04/29 Python
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
理解生产者消费者模型及在Python编程中的运用实例
2016/06/26 Python
Python如何实现文本转语音
2016/08/08 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
清明节扫墓活动方案
2014/03/02 职场文书
幼儿园教师的自我评价范文
2014/09/17 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
家长会开场白和结束语
2015/05/29 职场文书
无房证明样本
2015/06/17 职场文书
三八妇女节致辞
2015/07/31 职场文书
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python