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中精确输出JSON浮点数的方法
Apr 18 Python
Python 实现简单的电话本功能
Aug 09 Python
python实现用户管理系统
Jan 10 Python
NumPy 如何生成多维数组的方法
Feb 05 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Django 实现下载文件功能的示例
Mar 06 Python
分享8点超级有用的Python编程建议(推荐)
Oct 13 Python
python通过matplotlib生成复合饼图
Feb 06 Python
Python描述符descriptor使用原理解析
Mar 21 Python
Python基于Twilio及腾讯云实现国际国内短信接口
Jun 18 Python
在Windows下安装配置CPU版的PyTorch的方法
Apr 02 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动态生成JavaScript代码
2009/03/09 PHP
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
客户端 使用XML DOM加载json数据的方法
2010/09/28 Javascript
jQuery 网易相册鼠标移动显示隐藏效果实现代码
2013/03/31 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
js函数调用的方式
2014/05/06 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JavaScript实现给定时间相加天数的方法
2016/01/25 Javascript
Angular2内置指令NgFor和NgIf详解
2016/08/03 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
jQuery实现可兼容IE6的滚动监听功能
2017/09/20 jQuery
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
Python基于Pymssql模块实现连接SQL Server数据库的方法详解
2017/07/20 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
《鱼游到了纸上》教学反思
2014/02/20 职场文书
导游个人求职信范文
2014/03/23 职场文书
部门2014年度工作总结
2014/11/12 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
python神经网络Xception模型
2022/05/06 Python