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自动化测试实例解析
Sep 28 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python的中异常处理机制
Aug 30 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
Django后端接收嵌套Json数据及解析详解
Jul 17 Python
Django 缓存配置Redis使用详解
Jul 23 Python
使用OpCode绕过Python沙箱的方法详解
Sep 03 Python
从numpy数组中取出满足条件的元素示例
Nov 26 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 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 utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
jquery中event对象属性与方法小结
2013/12/18 Javascript
jquery中get,post和ajax方法的使用小结
2014/02/04 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
2016/05/09 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
JS 使用 window对象的print方法实现分页打印功能
2018/05/16 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
vue路由分文件拆分管理详解
2020/08/13 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
python实现图片中文字分割效果
2019/07/22 Python
Python操作qml对象过程详解
2019/09/26 Python
django使用channels实现通信的示例
2020/10/19 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
测绘工程本科生求职信
2013/10/10 职场文书
应届生求职推荐信
2013/10/28 职场文书
文化宣传方案
2014/03/13 职场文书
培训班通知
2015/04/25 职场文书
2015年重阳节主持词
2015/07/04 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
TS 类型兼容教程示例详解
2022/09/23 Javascript