一开始做图像处理都是一个函数块一个函数块实现,通过学习才发现Opencv与Matlab相似,都有类似的处理函数。具体例子如下:
#include "stdio.h"
#include "highgui.h"
#include "cv.h"
int main(int argc, char* argv[])
{
IplImage *img=cvLoadImage("Lena.png");
cvNamedWindow("Original_photo",CV_WINDOW_AUTOSIZE);
IplImage *out=cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,3);
cvSmooth(img,out,CV_GAUSSIAN,3,3);
/*void cvSmooth( const CvArr* src, CvArr* dst,int smoothtype=CV_GAUSSIAN,
int param1, int param2, double param3, double param4 );
src:输入图像.
dst:输出图像.
smoothtype平滑方法:
CV_BLUR_NO_SCALE(简单不带尺度变换的模糊) - -对每个象素的 param1×param2 领域求和。如果邻域大小是变化的,可以事先利用函数 cvIntegral 计算积分图像。
CV_BLUR (simple blur)- -对每个象素param1×param2邻域求和并做尺度变换 1/(param1×param2)。
CV_GAUSSIAN(gaussian blur) - -对图像进行核大小为 param1×param2 的高斯卷积。
CV_MEDIAN(median blur) - -对图像进行核大小为param1×param1 的中值滤波 (邻域是方的)。
CV_BILATERAL(双向滤波) - -应用双向 3x3 滤波,彩色 sigma=param1,空间 sigma=param2.。
关于双向滤波*/
/*CV_GAUSSIAN 高斯模糊 param3为零时,高斯卷积核sigma通过以下公式计