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通过cx_Oracle模块连接Oracle乱码的问题
Oct 18 Python
python运行时强制刷新缓冲区的方法
Jan 14 Python
Python多项式回归的实现方法
Mar 11 Python
python命名空间(namespace)简单介绍
Aug 10 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
Python CSV文件模块的使用案例分析
Dec 21 Python
Python 面向对象部分知识点小结
Mar 09 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
Mar 23 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 Python
Python将list元素转存为CSV文件的实现
Nov 16 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
SSI指令
2006/11/25 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
php reset() 函数指针指向数组中的第一个元素并输出实例代码
2016/11/21 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
npm配置国内镜像资源+淘宝镜像的方法
2018/09/07 Javascript
vue vant中picker组件的使用
2020/11/03 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
python字符串中的单双引
2017/02/16 Python
python 内置模块详解
2019/01/01 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
python标识符命名规范原理解析
2020/01/10 Python
django 实现简单的插入视频
2020/04/07 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
如何通过python计算圆周率PI
2020/11/11 Python
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
生产部岗位职责范文
2014/02/07 职场文书
仓库文员岗位职责
2014/04/06 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2014年招生工作总结
2014/11/26 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
教师节联欢会主持词
2015/07/04 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript