OpenCV(三十九):积分图像

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×16
    Mat 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);
}

标准求和积分结果:

平方求和积分结果:

倾斜求和积分结果:

相关推荐
财迅通Ai4 分钟前
MLCC业务爆发式增长,带动昀冢科技三季度扭亏为盈
大数据·人工智能·科技·昀冢科技
AI日报派送佬5 分钟前
2026年11月02日 AI 行业日报|商汤开源 Loop-9B、Pika 发布 H3 Flex 音视频模型、Meta× 傅利叶推出人形机器人 Max
人工智能·微软·开源·音视频·openai·1024程序员节·ai日报
义嘉泰6 分钟前
心率能测出来不难,难的是低功耗、稳定、还能量产
人工智能·科技
具身AGI7 分钟前
家用导航的安全,要看它离什么多近多快
人工智能·深度学习·安全
大模型任我行10 分钟前
英伟达:双重采样修正强化学习奖励
人工智能·语言模型·自然语言处理·论文笔记
Meta Luo14 分钟前
AI 时代,Web 自动化测试该怎么做?
前端·人工智能·playwright 替代工具·无代码自动化测试工具·低代码 ui 自动化测试·web 回归测试工具
海盗123415 分钟前
微软技术日报 2026-11-02:开发者环境服务退役、Defender 清点本地 AI 代理
人工智能·microsoft·机器人·人工智能aigc
hetao173383718 分钟前
2026-11-02 hetao1733837 的刷题记录
c++·算法
Tairitsu_H27 分钟前
[C++高阶数据结构·图论下] 最短路径:为什么“挑最小的”一定正确?
数据结构·c++·图论
猿界零零七29 分钟前
Agent 开发面试题--Day002【Agent和Workflow的有什么区别】
人工智能·大模型