python 计算积分图和haar特征的实例代码


Posted in Python onNovember 20, 2019

下面的代码通过积分图计算一张图片的一种haar特征的所有可能的值。初步学习图像处理并尝试写代码,如有错误,欢迎指出。

import cv2
import numpy as np
import matplotlib.pyplot as plt
#
#计算积分图
#
def integral(img):
  integ_graph = np.zeros((img.shape[0],img.shape[1]),dtype = np.int32)
  for x in range(img.shape[0]):
    sum_clo = 0
    for y in range(img.shape[1]):
      sum_clo = sum_clo + img[x][y]
      integ_graph[x][y] = integ_graph[x-1][y] + sum_clo;
  return integ_graph

# Types of Haar-like rectangle features
#  --- ---
# |  |  |
# | - | + |
# |  |  |
# --- ---
#
#就算所有需要计算haar特征的区域
#
def getHaarFeaturesArea(width,height):
  widthLimit = width-1
  heightLimit = height/2-1
  features = []
  for w in range(1,int(widthLimit)):
    for h in range(1,int(heightLimit)):
      wMoveLimit = width - w
      hMoveLimit = height - 2*h
      for x in range(0, wMoveLimit):
        for y in range(0, hMoveLimit):
          features.append([x, y, w, h])
  return features
#
#通过积分图特征区域计算haar特征
#
def calHaarFeatures(integral_graph,features_graph):
  haarFeatures = []
  for num in range(len(features_graph)):
    #计算左面的矩形区局的像素和
    haar1 = integral_graph[features_graph[num][0]][features_graph[num][1]]-\
    integral_graph[features_graph[num][0]+features_graph[num][2]][features_graph[num][1]] -\
    integral_graph[features_graph[num][0]][features_graph[num][1]+features_graph[num][3]] +\
    integral_graph[features_graph[num][0]+features_graph[num][2]][features_graph[num][1]+features_graph[num][3]]
    #计算右面的矩形区域的像素和
    haar2 = integral_graph[features_graph[num][0]][features_graph[num][1]+features_graph[num][3]]-\
    integral_graph[features_graph[num][0]+features_graph[num][2]][features_graph[num][1]+features_graph[num][3]] -\
    integral_graph[features_graph[num][0]][features_graph[num][1]+2*features_graph[num][3]] +\
    integral_graph[features_graph[num][0]+features_graph[num][2]][features_graph[num][1]+2*features_graph[num][3]]
    #右面的像素和减去左面的像素和
    haarFeatures.append(haar2-haar1)
  return haarFeatures


img = cv2.imread("faces/face00001.bmp",0)
integeralGraph = integral(img)
featureAreas = getHaarFeaturesArea(img.shape[0],img.shape[1])
haarFeatures = calHaarFeatures(integeralGraph,featureAreas)
print(haarFeatures)

以上这篇python 计算积分图和haar特征的实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python多重继承实例
Oct 11 Python
Python max内置函数详细介绍
Nov 17 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
python3使用QQ邮箱发送邮件
May 20 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
Python字符串对象实现原理详解
Jul 01 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
python中if及if-else如何使用
Jun 02 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
python中的垃圾回收(GC)机制
Sep 21 Python
用ldap作为django后端用户登录验证的实现
Dec 07 Python
Python 函数绘图及函数图像微分与积分
Nov 20 #Python
python抓取多种类型的页面方法实例
Nov 20 #Python
Python超越函数积分运算以及绘图实现代码
Nov 20 #Python
python自动化实现登录获取图片验证码功能
Nov 20 #Python
python通过链接抓取网站详解
Nov 20 #Python
python爬虫之遍历单个域名
Nov 20 #Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 #Python
You might like
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
php url路由入门实例
2014/04/23 PHP
微信支付开发告警通知实例
2016/07/12 PHP
php中类和对象:静态属性、静态方法
2017/04/09 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
PHP7内核CGI与FastCGI详解
2019/04/14 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
jQuery中的val()示例应用
2014/02/26 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
js实现超级玛丽小游戏
2020/03/18 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python实现朴素贝叶斯分类器的方法详解
2018/07/04 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
存储过程的优缺点是什么
2015/01/10 面试题
某公司.Net方向面试题
2014/04/24 面试题
岗位聘任书范文
2014/03/29 职场文书
小学庆六一活动总结
2014/08/28 职场文书
车辆年审委托书范本
2014/09/18 职场文书
开展警示教育活动总结
2015/05/09 职场文书
.Net Core导入千万级数据至Mysql的步骤
2021/05/24 MySQL