1.图像滤波
这里有到两个函数cvCreateImage和 cvSmooth( image, out, CV_GAUSSIAN, 5,5,0,0 )。
cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3)用于创建
指定大小的图像,第一个参数是尺寸,第二个参数是数据类型,
第三个参数是通道数。cvSmooth( image, out, CV_GAUSSIAN, 5,5,0,0 )
用于图像滤波,第一个参数是输入图像;第二个参数是输出图像;
第三个参数是平滑方法;5,5表示5*5邻域;
第六个参数是高斯参数的 Gaussian sigma (标准差)。
#include <stdio.h>
#include <fstream>
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "cv.h"
using namespace cv;
using namespace std;
int main( )
{
IplImage* image = cvLoadImage( "a1.ppm" );//输入图像
cvNamedWindow( "Example4-in", CV_WINDOW_AUTOSIZE );//创建显示输入图像的窗口
cvNamedWindow( "Example4-out", CV_WINDOW_AUTOSIZE );//创建显示输出图像的窗口
cvShowImage( "Example4-in", image );//显示输入图像
IplImage* out = cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);//创建和image大小相同的图像
// 平滑
cvSmooth( image, out, CV_GAUSSIAN, 5,5,0,0 );
cvSmooth( out, out, CV_GAUSSIAN, 5, 5,0,0);
cvShowImage( "Example4-out", out );
cvReleaseImage( &out );
cvWaitKey( 0 );
cvDestroyWindow("Example4-in" );
cvDestroyWindow("Example4-out" );
cvReleaseImage( &image );
}
封装函数
1.图像缩放
cvPyrDown( in, out )使用Gaussian金字塔分解对输入图像向下采样。第一个参数是输入图像,第二个参数是输出图像,长宽为输入图像的一半。
#include <stdio.h>
#include <fstream>
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include "cv.h"