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 根据pid杀死相应进程的方法
Jan 16 Python
5款非常棒的Python工具
Jan 05 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
基于tensorflow加载部分层的方法
Jul 26 Python
python设计tcp数据包协议类的例子
Jul 23 Python
python脚本之一键移动自定格式文件方法实例
Sep 02 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
Apr 16 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 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 session应用实例 登录验证
2009/03/16 PHP
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
PHP Cookei记录用户历史浏览信息的代码
2016/02/03 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
jquery中.add()的使用分析
2013/04/26 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
AngularJS基础 ng-list 指令详解及示例代码
2016/08/02 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
linux系统使用python监测系统负载脚本分享
2014/01/15 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python输出带颜色的字符串实例
2017/10/10 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
基于python实现雪花算法过程详解
2019/11/16 Python
python设置表格边框的具体方法
2020/07/17 Python
Django-celery-beat动态添加周期性任务实现过程解析
2020/11/26 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
Tomcat中怎么使用log4j输出所有的log
2016/07/07 面试题
技术股东合作协议书
2014/12/02 职场文书
多人股份制合作协议书
2016/03/19 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
使用javascript解析二维码的三种方式
2021/11/11 Javascript
详解SQL报错盲注
2022/07/23 SQL Server