图像积分图的计算

来源:互联网 发布:防蹭网软件免root 编辑:程序博客网 时间:2024/05/16 04:38

图像积分图的定义百度一下。

/* *@function IntegralImage.cpp *@brief 计算积分图 *@author ltc *@date 18:14 Tuesday,December 1st,2015*/#include<opencv2\core\core.hpp>#include<opencv2\highgui\highgui.hpp>#include<opencv2\imgproc\imgproc.hpp>#include<iostream>using namespace std;using namespace cv;int main(int argc,char* argv[]){//读取图像Mat image;image=imread("lena.bmp",IMREAD_COLOR);if(image.empty()){cerr<<"Failure in loading image"<<endl;return -1;}//转换成灰度图像Mat grayImage;cvtColor(image,grayImage,COLOR_BGR2GRAY);//定义、计算积分图像,积分图像比灰度图像多一行一列Mat integralImage=Mat::zeros(grayImage.rows+1,grayImage.cols+1,CV_32SC1);for(int i=0;i<grayImage.rows;i++){for(int j=0;j<grayImage.cols;j++){integralImage.at<int>(i+1,j+1)=integralImage.at<int>(i,j+1)+integralImage.at<int>(i+1,j)-integralImage.at<int>(i,j)+grayImage.at<unsigned char>(i,j);}}//真正的积分图像Mat realIntegralImage=integralImage(Range(1,integralImage.rows),Range(1,integralImage.cols));/*cout<<realIntegralImage.row(0)<<endl;*///Opencv中自带的积分图像计算Mat integralImage_integral;integral(grayImage,integralImage_integral);//下面两行代码用来对比自己的积分图像和Opencv自己计算的积分图像是否一样//cout<<integralImage.row(1)<<endl;//cout<<integralImage_integral.row(1)<<endl;imshow("src",image);imshow("gray",grayImage);waitKey(0);return 0;}


0 0
原创粉丝点击