平滑处理 — 高斯模糊
相关函数:
C++: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)
参数解析:
- src – 输入图片,可以使是任意通道数,该函数对通道是独立处理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
- dst – 输出图片,和输入图片相同大小和深度。
- ksize – 高斯内核大小。ksize.width和ksize.height允许不相同但他们必须是正奇数。或者等于0,由参数sigma的乘机决定。
- sigmaX – 高斯内核在X方向的标准偏差。
- sigmaY – 高斯内核在Y方向的标准偏差。如果sigmaY为0,他将和sigmaX的值相同,如果他们都为0,那么他们由ksize.width和ksize.height计算得出。
- borderType – 用于判断图像边界的模式。
- 为了结果的正确性着想,最好是把第三个参数Size,第四个参数sigmaX和第五个参数sigmaY全部指定到。
相关实例:
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include"opencv2/imgproc/imgproc.hpp"
#include <stdio.h>
using namespace cv;
/*
高斯模糊:void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)
src – 输入图片,可以使是任意通道数,该函数对通道是独立处理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.
dst – 输出图片,和输入图片相同大小和深度。
ksize – 高斯内核大小。ksize.width和ksize.height允许不相同但他们必须是正奇数。或者等于0,由参数sigma的乘机决定。
sigmaX – 高斯内核在X方向的标准偏差。
sigmaY – 高斯内核在Y方向的标准偏差。如果sigmaY为0,他将和sigmaX的值相同,如果他们都为0,那么他们由ksize.width和ksize.height计算得出。
borderType – 用于判断图像边界的模式。
*为了结果的正确性着想,最好是把第三个参数Size,第四个参数sigmaX和第五个参数sigmaY全部指定到。
**/
int main() {
cvNamedWindow("高斯模糊原图", 0);
cvNamedWindow("高斯模糊效果图",0);
Mat imageSrc = imread("game.jpg");
imshow("高斯模糊原图", imageSrc);
Mat imageChange;
//高斯模糊处理
GaussianBlur(imageSrc, imageChange, Size(7, 7), 0, 0);
//显示效果图
imshow("高斯模糊效果图", imageChange);
waitKey(6000 * 100);
}
效果图: