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编程中的包结构
Oct 25 Python
Python3如何解决字符编码问题详解
Apr 23 Python
Python HTTP客户端自定义Cookie实现实例
Apr 28 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
django页面跳转问题及注意事项
Jul 18 Python
详解python中的模块及包导入
Aug 30 Python
为什么说Python可以实现所有的算法
Oct 04 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
sklearn+python:线性回归案例
Feb 24 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
Python 创建TCP服务器的方法
Jul 28 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
PHP PDOStatement::nextRowset讲解
2019/02/01 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
Javascript 面向对象(三)接口代码
2012/05/23 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
JavaScript程序中实现继承特性的方式总结
2016/06/24 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
浅谈js基础数据类型和引用类型,深浅拷贝问题,以及内存分配问题
2017/09/02 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
原生js实现九宫格拖拽换位
2021/01/26 Javascript
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
python try...finally...的实现方法
2020/11/25 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
实习护理工作自我评价
2013/09/25 职场文书
初中科学教学反思
2014/01/21 职场文书
绩效考核实施方案
2014/03/18 职场文书
美食节目策划方案
2014/05/31 职场文书
学校实习推荐信
2015/03/27 职场文书
爱心捐书倡议书
2015/04/27 职场文书
2015初中团委工作总结
2015/07/28 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
python 爬取天气网卫星图片
2021/06/07 Python