OpenCV GaussianBlur()函数的用法(附带实例)
高斯滤波是一种线性平滑滤波,对于除去高斯噪声有很好的效果。在 OpenCV 中,提供函数 GaussianBlur() 实现高斯滤波,该函数声明如下:
【实例】实现高斯滤波。
1) 打开 Qt Creator,新建一个控制台工程,工程名是 test。
2) 在工程中打开 main.cpp,输入如下代码:
3) 保存工程并运行,结果如下图所示:
void GaussianBlur( InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT );各个参数的含义如下:
- src 表示输入图像;
- dst 表示输出图像;
- ksize 表示内核大小;
- sigmaX 表示高斯核函数在 X 方向的标准偏差;
- sigmaY 表示高斯核函数在 Y 方向的标准偏差;
- borderType 表示边界模式,默认值为 BORDER_DEFAULT,一般可以忽略。
【实例】实现高斯滤波。
1) 打开 Qt Creator,新建一个控制台工程,工程名是 test。
2) 在工程中打开 main.cpp,输入如下代码:
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src, dst; src = imread("lena.png"); if (!src.data) { printf("could not load image3...\n"); return -1; } // 定义窗口名称 char input_title[] = "src"; char output_title[] = "Mean filtering";// 均值滤波 // 新建窗口 namedWindow(input_title, WINDOW_AUTOSIZE); namedWindow(output_title, WINDOW_AUTOSIZE); imshow(input_title, src);// 原图显示 blur(src, dst, Size(15, 15), Point(-1, -1)); imshow(output_title, dst); // 均值滤波操作 Mat gblur; // 高斯滤波操作 GaussianBlur(src, gblur, Size(15, 15), Point(11, 11));// 高斯滤波 imshow("Gaussian filter", gblur);// 显示高斯滤波滤波结果图 waitKey(0); return 0; }在上述代码中,我们用均值滤波和高斯滤波进行了对比。
3) 保存工程并运行,结果如下图所示:
