opencv-GaussianBlur高斯滤波
图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等
高斯滤波GaussianBlur
与均值模糊相比,只是把卷积模板中的值换一下,不是全1了,换成一组符合高斯分布的数值放在模板里面,比如这时中间的数值最大,往两边走越来越小,构造一个小的高斯包
mao.jpg
#include<opencv2/opencv.hpp> #include<iostream> int main(int argc, char** argv) { cv::Mat src = cv::imread("D:/bb/tu1/mao.jpg"); cv::Mat out; cv::GaussianBlur(src, out, cv::Size(5, 5), 3, 3);//高斯滤波 /* 参数1:src,输入图像,即源图像,填Mat类的对象即可。它可以是单独的任意通道数的图片,但需要注意,图片深度应该为CV_8U,CV_16U, CV_16S, CV_32F 以及 CV_64F之一 参数2:即目标图像,需要和源图片有一样的尺寸和类型 参数3:ksize,高斯内核的大小。其中ksize.width和ksize.height可以不同,但他们都必须为正数和奇数 参数4:sigmaX,表示高斯核函数在X方向的的标准偏差 参数5:sigmaY,表示高斯核函数在Y方向的的标准偏差;若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来 应分别指定X和Y方向的标准偏差,sigmaX和sigmaY。如果仅指定了sigmaX,则sigmaY与sigmaX相同。如果两者都为零,则根据内核大小计算它们。高斯模糊在从图像中去除高斯噪声方面非常有效 参数6:borderType在图像边界上应用内核时指定图像边界。可能的值有: cv::BORDER_CONSTANT cv::BORDER_REPLICATE cv::BORDER_REFLECT cv::BORDER_WRAP cv::BORDER_REFLECT_101 cv::BORDER_TRANSPARENT cv::BORDER_REFLECT101 cv::BORDER_DEFAULT cv::BORDER_ISOLATED */ cv::GaussianBlur(src, out, cv::Size(5, 5), 3, 3); cv::namedWindow("src"); cv::imshow("src", src); cv::namedWindow("out"); cv::imshow("out", out); std::cerr << src.rows << std::endl; std::cerr << src.cols << std::endl; cv::waitKey(0); return 0; }