OpenCV(三十九):积分图像

news/2025/1/15 18:47:22/

1.积分图像介绍

       积分图像中的每个像素表示了原始图像中对应位置及其左上方矩形区域内像素值的总和。如图,p0表示原始图像蓝色区域内像素值的总和。

       倾斜求和(Skewed Sum)是积分图像的一种扩展形式,用于计算图像区域内的像素和,其中区域并不是矩形而是斜边形。通过倾斜求和的积分图像,可以在常量时间内计算任意斜边形区域内的像素和。。如图,p0表示原始图像灰色区域内像素值的总和。

2.计算积分图像函数integral()

void cv::integral ( InputArray   src,

OutputArray sum,

OutputArray sqsum,

OutputArray tilted,

int  sdepth = -1,

int sqdepth = -1

)

  • src:输入图像,图像数据类型可以是CV_8U、CV_32F或者CV_64。
  • sum:输出标准求和积分图像,图像的数据类型可以是CV_32S、CV_32F或者CV_64。
  • sqsum:输出平方求和积分图像,图像的数据类型可以是CV_32F或者CV_64F。
  • tilted:输出倾斜45°的倾斜求和积分图像,其数据类型与sum相同。
  • sdepth: 输出标准求和积分图像和倾斜求和积分图像的数据类型标志,可以选择的参数为CV _32S、CV_32F或者 CV_64F,参数默认值为-1,表示满足数据存储的自适应类型。
  • sqdepth: 输出平方求和积分图像的数据类型标志,可以选择的参数为CV_32F或者 CV_64F,参数默认值为-1,表示满足数据存储的自适应类型。

3.示例代码

void  Integral_image(){//创建一个16×16全为1的矩阵,因为256=16×16Mat img=Mat::ones(16,16,CV_32FC1);//在图像中加入随机噪声RNG rng(10086);for(int y=0;y<img.rows;y++){for(int x=0;x<img.cols;x++){float d=rng.uniform(-0.5,0.5);img.at<float>(y,x)=img.at<float>(y,x)+d;}}//计算标准求和积分Mat sum;integral(img,sum);//为了便于显示,转成CV_8U格式Mat sum8U=Mat_<uchar>(sum);imwrite("/sdcard/DCIM/sum8U.png",sum8U);//计算平方求和积分Mat sqsum;integral(img,sum,sqsum);//为了便于显示,转成CV_8U格式Mat sqsum8U=Mat_<uchar>(sqsum);imwrite("/sdcard/DCIM/sqsum8U.png",sqsum8U);//计算倾斜求和积分Mat tilted;integral(img,sum,sqsum,tilted);//为了便于显示,转成CV_8U格式Mat tilted8U=Mat_<uchar>(tilted);imwrite("/sdcard/DCIM/tilted8U.png",tilted8U);
}

标准求和积分结果:

平方求和积分结果:

倾斜求和积分结果:


http://www.ppmy.cn/news/1115961.html

相关文章

Python 类的继承

视频版教程 Python3零基础7天入门实战视频教程 继承是面向对象的三大特征之一&#xff0c;也是实现软件复用的重要手段。Python 的继承是多继承机制&#xff0c;即一个子类可以同时有多个直接父类。 语法&#xff1a; class 子类(父类1,父类2,…): 子类继承父类的属性和方法…

系统架构常用的工具

HBase HBase是一个分布式的、面向列的开源数据库&#xff0c;该技术来源于 Fay Chang 所撰写的Google论文“Bigtable&#xff1a;一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统&#xff08;File System&#xff09;所提供的分布式数据存储一样&#xff…

【Java】第一个Servlet程序

第一个Servlet程序 创建项目引入依赖手动创建必要的目录/文件编写代码打包程序部署验证程序是否正常工作 创建项目 选中maven 创建好项目后,观察左侧项目结构 引入依赖 当权代码需要使用servlet开发,而Java标准库中并没有servlet,此时就需要让maven能够把servlet的依赖获取…

Vue中的过滤器 Filters

过滤器 Filters 过滤器一般用于格式化文本内容&#xff0c;通常可以在两个地方使用&#xff0c;主要是模板语法、以及 v-bind 表达式中。例如我想对展示的文本进行一些特殊处理&#xff0c;将金额进行四舍五入后再展示。选项 filters 内可以编写多个自定义过滤器。 用法&…

信息化发展48

UML l 、统一建模语言&#xff08; UML &#xff09;是一种定义良好、易于表达、功能强大且普遍适用的建模语言&#xff0c; 它融入了软件工程领域的新思想、新方法和新技术&#xff0c; 它的作用域不限于支持OOA 和OOD &#xff0c; 还支持从需求分析开始的软件开发的全过程。…

windows下flutter的环境安装

Flutter是谷歌出品的移动应用SDK&#xff0c;性能卓越、体验精美、跨平台、HotReload等等这些特点。 Dart是谷歌推出的编程语言。支持即时编译JIT&#xff08;Just In Time&#xff09;、HotReload&#xff08;热加载&#xff09;和事前编译AOT&#xff08;Ahead of Time&…

杭州企业型通配符SSL数字证书

通配符SSL数字证书是众多数字证书产品中比较特殊的一款产品&#xff0c;在互联网安全领域&#xff0c;SSL数字证书是保障网站安全性的一种重要手段。而通配符SSL数字证书&#xff0c;更是其中的一种特殊类型&#xff0c;它允许用户对多个域名进行保护&#xff0c;只需一张证书即…

vue3中el-tree的使用及后端传参

实现效果&#xff1a; 如上图所示&#xff0c;实现el-tree的基本使用&#xff0c;回显及联调。 1.点击弹框弹出样式&#xff0c;node-key是id,与后端字段名对应 <Dialog v-model"menuVisible" title"菜单分配"><el-tree:data"treeData&qu…