首页 > 代码库 > 卷积(convolution) cvFilter2D

卷积(convolution) cvFilter2D

核心函数:cvFilter2D

原理:

核的中心对准源图像的像素,源图像和核的相对应元素分别相乘并全部相加,得到的值为目标图像核心的值;对于边界则默认用最边界的元素值填充出一个虚拟外边界(相当于调用cvCopyMakeBorder,cvFilter2D内置这个函数)

程序:

wKioL1PsMmmT73t5AAG0k3n2fJs452.jpg

代码:

#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <iostream>
int convolution(int argc,char** argv)
{
IplImage* src=http://www.mamicode.com/cvCreateImage(cvSize(10,10),8,1); //源图像,注意只有CV_8UC1的类型可以修改其中的值,如果为float则不能用cvSet,cvZero或者直接用for语句修改其中的值"srcMat:"<<std::endl;
for(int rows=0;rows<src->height;rows++)
{
uchar *data=http://www.mamicode.com/(uchar*)(src->imageData+rows*src->widthStep);" ";
}
std::cout<<std::endl;
}
std::cout<<"kernelMat:"<<std::endl;
for(int rows=0;rows<kernel.height;rows++)
{
float *data=http://www.mamicode.com/(float*)(kernel.data.ptr+rows*kernel.step);" ";
}
std::cout<<std::endl;
}
std::cout<<"ConvolutionDstMat:"<<std::endl;
for(int rows=0;rows<dst->height;rows++)
{
uchar *data=http://www.mamicode.com/(uchar*)(dst->imageData+rows*dst->widthStep);" ";
}
std::cout<<std::endl;
}
return 0;
}


本文出自 “flyclc” 博客,请务必保留此出处http://flyclc.blog.51cto.com/1385758/1539833