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常见文件操作的函数示例代码
Nov 15 Python
跟老齐学Python之从if开始语句的征程
Sep 14 Python
python optparse模块使用实例
Apr 09 Python
Python编程之黑板上排列组合,你舍得解开吗
Oct 30 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
Pytorch之contiguous的用法
Dec 31 Python
Python tkinter三种布局实例详解
Jan 06 Python
利用Python+OpenCV三步去除水印
May 28 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 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 VS ASP
2006/10/09 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
js停止输出代码
2008/07/20 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
vue项目base64字符串转图片的实现代码
2018/07/13 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python实现决策树分类
2018/08/30 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
思想品德自我鉴定
2013/10/12 职场文书
网络技术专业推荐信
2014/02/20 职场文书
心理咨询承诺书
2014/05/20 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2014年内勤工作总结
2014/11/24 职场文书
青年文明号申报材料
2014/12/23 职场文书
机器人总动员观后感
2015/06/09 职场文书
音乐研修感悟
2015/11/18 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Java面试题冲刺第十九天--数据库(4)
2021/08/07 Java/Android
Oracle 临时表空间SQL语句的实现
2021/09/25 Oracle
Python MNIST手写体识别详解与试练
2021/11/07 Python
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python