【opencv学习笔记】积分图

1、 前言

积分图(integral image),是一种在图像中快速计算矩形区域和的方法。它可以在短时间内计算图像中任意大小矩形区域内像素的和。这样在图像模糊、边缘提取、对象检测的时候极大降低计算量、提高计算速度。

2、原理

积分图中任意一点(x,y)的值等于灰度图的左上角与当前点所围成的矩形区域内所有像素点灰度值之和。
在这里插入图片描述快速计算方法:
在这里插入图片描述

3、函数说明

在这里插入图片描述4、参数详解

  • 第一个参数,InputArray src,输入图像为W×H,8位或浮点(32F或64F);
  • 第二个参数,OutputArray sum,积分图像大小为(W+1)×(H+1),32位整数或浮点(32F或64F);
  • 第三个参数,OutputArray sqsum,平方像素值积分图像,为(W+1)×(H+1)双精度浮点(64F)阵列;
  • 第四个参数,OutputArray tilted,图像积分旋转45°,大小啊为(W+1)×(H+1)阵,数据类型与和函数参数sum相同;
  • 第五个参数,int sdepth = -1,所需积分深度和倾斜积分图像,一般为CV_32S,CV_32F,或CV_64F;
  • 第六个参数,int sqdepth = -1,所需的平方像素值积分图像的深度,一般为CV_32F或CV_64F;

4、代码展示

# include<opencv2\opencv.hpp>
# include <iostream>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("E:/tuku/lang.jpg",IMREAD_GRAYSCALE);
	if (src.empty()) {
		cout << "can't find this picture...";
		return -1;
	}
	imshow("input", src);
	Mat sumii = Mat::zeros(src.rows + 1, src.cols + 1, CV_32FC1);
	Mat sqsumii = Mat::zeros(src.rows + 1, src.cols + 1, CV_64FC1);
	integral(src, sumii, sqsumii);
	Mat Reslut_Image;
	//归一化处理
	normalize(sumii, Reslut_Image, 0, 255, NORM_MINMAX, CV_8UC1, Mat());
	imshow("out put", Reslut_Image);
	waitKey(0);
	return 0;
}

效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值