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的设计模式编程入门指南
Apr 02 Python
pygame加载中文名mp3文件出现error
Mar 31 Python
详解Python中类的定义与使用
Apr 11 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Python+matplotlib绘制不同大小和颜色散点图实例
Jan 19 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
Python中的Numpy矩阵操作
Aug 12 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
使用Python将字符串转换为格式化的日期时间字符串
Sep 01 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
python实现三次密码验证的示例
Apr 29 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设计模式 Prototype (原型模式)代码
2011/06/26 PHP
基于PHPexecl类生成复杂的报表表头示例
2016/10/14 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
javascript中对对层的控制
2006/12/29 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jquery操作复选框checkbox的方法汇总
2015/02/05 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
vue cli webpack中使用sass的方法
2018/02/24 Javascript
vue中子组件传递数据给父组件的讲解
2019/01/27 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
Vue CLI项目 axios模块前后端交互的使用(类似ajax提交)
2019/09/01 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
python缩进区别分析
2014/02/15 Python
Python Tkinter基础控件用法
2014/09/03 Python
python异常和文件处理机制详解
2016/07/19 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
Python Websocket服务端通信的使用示例
2020/02/25 Python
python Cartopy的基础使用详解
2020/11/01 Python
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
生物化学研究助理员求职信
2013/10/09 职场文书
自荐信格式简述
2014/01/25 职场文书
回门宴父母答谢词
2014/01/26 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
小时代观后感
2015/06/10 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
怎么用Python识别手势数字
2021/06/07 Python
Nginx如何配置根据路径转发详解
2022/07/23 Servers