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获取操作系统信息实例
Sep 02 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
Django框架视图函数设计示例
Jul 29 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
python调用百度API实现人脸识别
Nov 17 Python
Python 绘制多因子柱状图
May 11 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模板引擎Smarty的缓存使用总结
2014/04/24 PHP
thinkPHP模板算术运算相关函数用法分析
2016/07/12 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
Javascript学习笔记6 prototype的提出
2010/01/11 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
javascript操作数组详解
2014/12/17 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
利用soaplib搭建webservice详细步骤和实例代码
2013/11/20 Python
python实现的文件夹清理程序分享
2014/11/22 Python
Python list操作用法总结
2015/11/10 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Columbia美国官网:美国著名的户外服装品牌
2016/11/24 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
怎样有效的进行自我评价
2013/10/06 职场文书
升职自荐信
2013/11/28 职场文书
中专生毕业个人鉴定
2014/02/26 职场文书
小学数学课题方案
2014/06/15 职场文书
2014年财政工作总结
2014/12/10 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python
SQL bool盲注和时间盲注详解
2022/07/23 SQL Server