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算法之栈(stack)的实现
Aug 18 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
Python中pandas dataframe删除一行或一列:drop函数详解
Jul 03 Python
python实现推箱子游戏
Mar 25 Python
在Pycharm中执行scrapy命令的方法
Jan 16 Python
Python 变量的创建过程详解
Sep 02 Python
python连接打印机实现打印文档、图片、pdf文件等功能
Feb 07 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python建造者模式案例运行原理解析
Jun 29 Python
学python需要去培训机构吗
Jul 01 Python
python3代码输出嵌套式对象实例详解
Dec 03 Python
Pytorch 如何实现常用正则化
May 27 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
10条PHP高级技巧[修正版]
2011/08/02 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
2015/04/17 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
JavaScript等比例缩放图片控制超出范围的图片
2013/08/06 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
JavaScript实现多叉树的递归遍历和非递归遍历算法操作示例
2018/02/08 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
vue实现局部刷新的实现示例
2019/04/16 Javascript
vue实现侧边栏导航效果
2019/10/21 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
python计算一个序列的平均值的方法
2015/07/11 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
公务员综合考察材料
2014/02/01 职场文书
电力安全事故反思
2014/04/27 职场文书
民主评议政风行风整改方案
2014/09/17 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
课外活动实习计划
2015/01/19 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
电工生产实习心得体会
2016/01/22 职场文书
创业计划书之便利店
2019/09/05 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
Python实现简单得递归下降Parser
2022/05/02 Python