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中返回字典键的值的values()方法使用
May 22 Python
Python利用带权重随机数解决抽奖和游戏爆装备问题
Jun 16 Python
Python实现基本线性数据结构
Aug 22 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
使用Python机器学习降低静态日志噪声
Sep 29 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
详解Python中的内建函数,可迭代对象,迭代器
Apr 29 Python
python字典改变value值方法总结
Jun 21 Python
Python进行统计建模
Aug 10 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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中让上传的文件大小在上传前就受限制的两种解决方法
2013/06/24 PHP
PHP语法小结之基础和变量
2015/11/22 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
Node.js实现文件上传
2016/07/05 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
2016/12/08 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
深入理解Vue transition源码分析
2017/07/30 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
[07:20]2018DOTA2国际邀请赛寻真——逐梦Mineski
2018/08/10 DOTA
python在指定目录下查找gif文件的方法
2015/05/04 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
2019/06/28 Python
Django 请求Request的具体使用方法
2019/11/11 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
Python使用graphviz画流程图过程解析
2020/03/31 Python
python 从list中随机取值的方法
2020/11/16 Python
农业开发项目建议书
2014/05/16 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
信用卡催款律师函
2015/05/27 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
SpringBoot生成License的实现示例
2021/06/16 Java/Android
Python 发送SMTP邮件的简单教程
2021/06/24 Python