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;
}

 

 

 

  

 

posted @ 2021-10-28 12:21  天子骄龙  阅读(462)  评论(0编辑  收藏  举报