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 相关文章推荐
详解python3百度指数抓取实例
Dec 12 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
Django forms组件的使用教程
Oct 08 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
python爬虫之快速对js内容进行破解
Jul 09 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
django框架auth模块用法实例详解
Dec 10 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
python如何编写win程序
Jun 08 Python
python 详解turtle画爱心代码
Feb 15 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
无数据库的详细域名查询程序PHP版(5)
2006/10/09 PHP
关于页面优化和伪静态
2009/10/11 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
PHP 错误处理机制
2015/07/06 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
JS取request值以及自动执行使用示例
2014/02/24 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
JS和canvas实现俄罗斯方块
2017/03/14 Javascript
老生常谈js数据类型
2017/08/03 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
Python socket编程实例详解
2015/05/27 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
Python 模拟购物车的实例讲解
2017/09/11 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
使用PyInstaller将python转成可执行文件exe笔记
2018/05/26 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
python中的for循环
2018/09/28 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
python计算Content-MD5并获取文件的Content-MD5值方式
2020/04/03 Python
Python logging模块原理解析及应用
2020/08/13 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
Otticanet澳大利亚:最顶尖的世界名牌眼镜, 能得到打折季的价格
2018/08/23 全球购物
中专生的个人自我评价
2013/12/11 职场文书
中国梦口号
2014/06/13 职场文书
2014年度安全工作总结
2014/12/04 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python