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 相关文章推荐
Django在Win7下的安装及创建项目hello word简明教程
Jul 14 Python
python中assert用法实例分析
Apr 30 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
python自动截取需要区域,进行图像识别的方法
May 17 Python
Python基于mysql实现学生管理系统
Feb 21 Python
python中selenium操作下拉滚动条的几种方法汇总
Jul 14 Python
python plotly绘制直方图实例详解
Jul 22 Python
Python Web框架之Django框架cookie和session用法分析
Aug 16 Python
python类的实例化问题解决
Aug 31 Python
python中图像通道分离与合并实例
Jan 17 Python
python实现移动木板小游戏
Oct 09 Python
Pycharm配置autopep8实现流程解析
Nov 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
VIM中设置php自动缩进为4个空格的方法详解
2013/06/14 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
在PHP中使用FastCGI解析漏洞及修复方案
2015/11/10 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
PHP连接SQL server数据库测试脚本运行实例
2020/08/24 PHP
javascript 一个函数对同一元素的多个事件响应
2009/07/25 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
微信小程序 sha1 实现密码加密实例详解
2017/07/06 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
微信小程序实现拍照画布指定区域生成图片
2019/07/18 Javascript
小程序实现左滑删除的效果的实例代码
2020/10/19 Javascript
详解supervisor使用教程
2017/11/21 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python主线程捕获子线程的方法
2018/06/17 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
PyTorch 解决Dataset和Dataloader遇到的问题
2020/01/08 Python
Python @property原理解析和用法实例
2020/02/11 Python
Django model class Meta原理解析
2020/11/14 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
SNIDEL官网:日本VIVI杂志人气少女第一品牌
2020/03/12 全球购物
C语言基础笔试题
2013/04/27 面试题
yy婚礼司仪主持词
2014/03/14 职场文书
个人培训自我鉴定
2014/03/28 职场文书
项目转让协议书
2014/10/27 职场文书
创业计划书之酒厂
2019/10/14 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
Python网络编程之ZeroMQ知识总结
2021/04/25 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL