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编程中函数的使用要点
Mar 20 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
TensorFlow实现iris数据集线性回归
Sep 07 Python
Python2和Python3.6环境解决共存问题
Nov 09 Python
Python 3.8 新功能全解
Jul 25 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
浅谈python之自动化运维(Paramiko)
Jan 31 Python
Django通过json格式收集主机信息
May 29 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 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 __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
PHP实现登录注册之BootStrap表单功能
2017/09/03 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
优化Jquery,提升网页加载速度
2013/11/14 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
详解如何使用React Hooks请求数据并渲染
2020/10/18 Javascript
Python中每次处理一个字符的5种方法
2015/05/21 Python
python的turtle库使用详解
2019/05/10 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
PHP面试题附答案
2015/11/28 面试题
如何利用cmp命令比较文件
2013/09/23 面试题
教师师德承诺书
2014/03/26 职场文书
毕业生工作求职信
2014/06/30 职场文书
上下班时间调整通知
2015/04/23 职场文书
大学毕业论文致谢词
2015/05/14 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
叶问观后感
2015/06/15 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP
在容器中使用nginx搭建上传下载服务器
2022/05/11 Servers
ubuntu下常用apt命令介绍
2022/06/05 Servers
python 使用pandas读取csv文件的方法
2022/12/24 Python