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 相关文章推荐
解决Linux系统中python matplotlib画图的中文显示问题
Jun 15 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
Jul 03 Python
Python表达式的优先级详解
Feb 18 Python
Flask模板引擎Jinja2使用实例
Apr 23 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
python中怎么表示空值
Jun 19 Python
Python判断字符串是否为合法标示符操作
Sep 03 Python
Pytest allure 命令行参数的使用
Apr 18 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
python中 .npy文件的读写操作实例
Apr 14 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
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
2017/06/30 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
js微信分享API
2020/10/11 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
使用 bootstrap modal遇到的问题小结
2016/11/09 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
2020/09/04 Javascript
vue 如何从单页应用改造成多页应用
2020/10/23 Javascript
python实现目录树生成示例
2014/03/28 Python
python with statement 进行文件操作指南
2014/08/22 Python
python实现在windows下操作word的方法
2015/04/28 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
用Python写一个自动木马程序
2019/09/17 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
考试作弊检讨书大全
2014/02/18 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
党员民主生活会材料
2014/12/15 职场文书
2015年百日安全活动总结
2015/03/26 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python
Unicode中的CJK(中日韩统一表意文字)字符小结
2021/12/06 HTML / CSS
Golang流模式之grpc的四种数据流
2022/04/13 Golang
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL