积分图像

OpenCV可以轻松计算积分图像,只要用一个具有相应名称cvIntegral()的函数。

积分图是一个数据结构,可以实现子区域的快速求和。其中在人脸识别及相关算法中应用的Haar小波拥有显著应用。

积分图像简单来说就是(x,y)点的积分像素时(0,x)和(0,y)的求和。

void cvIntegral(const CvArr * image , CvArr * sum , CvArr * sqsum = NULL , CvArr * titleed_sum = NULL);

参数sum时必要的,一般设为32位浮点型。

如果输入的图像大小是W ✖️ H , 输出图像的大小必是(w+1)✖️ (H+1)

下面看一个《学习OpenCV》第六章练习题14

载入一幅图像,转换成灰度图像,然后得到它的积分图。

#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>

using namespace std;
using namespace cv;

int main(int argc, const char * argv[]) {
    /*1、载入一个图像*/
    const char filename[] = "/Users/linwang/Downloads/Lena.jpg";
    IplImage * src1 = cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);
    cout<<src1->width<<" -- "<<src1->height<<endl;
    
    /*2、克隆图像*/
    IplImage * Iintegral = cvCreateImage(cvSize(src1->width+1,src1->height+1),IPL_DEPTH_32F, src1->nChannels);
    
    /*3、积分图像*/
    cvIntegral(src1, Iintegral);
    cout<<Iintegral->width<<" -- "<<Iintegral->height<<endl;
    
    /*4、显示结果*/
    cvShowImage("Src", src1);
    cvShowImage("Dst", Iintegral);
    cvWaitKey(0);
    cvReleaseImage(&src1);
    cvReleaseImage(&Iintegral);
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值