【16】关于高斯 中值 和均值滤波的函数

均值卷积:

void blur( InputArray    src, 
           OutputArray   dst,
           Size          ksize,                         // 卷积窗口大小
           Point         anchor = Point(-1,-1),         // 锚点(即处理的像素位于kernel的位置)
           int           borderType = BORDER_DEFAULT    //边缘插值方法
         );

高斯卷积:

void GaussianBlur( InputArray   src, 
                   OutputArray  dst, 
                   Size         ksize,      // 卷积窗口大小
                   double       sigmaX,     // X方向卷积系数
                   double       sigmaY = 0, // Y方向卷积系数
                   int          borderType = BORDER_DEFAULT  //边缘插值方法
                 );
复制代码
enum BorderTypes {
    BORDER_CONSTANT    = 0,     // `iiiiii|abcdefgh|iiiiiii`  with some specified `i`
    BORDER_REPLICATE   = 1,     // `aaaaaa|abcdefgh|hhhhhhh`
    BORDER_REFLECT     = 2,     // `fedcba|abcdefgh|hgfedcb`
    BORDER_WRAP        = 3,     // `cdefgh|abcdefgh|abcdefg`
    BORDER_REFLECT_101 = 4,     // `gfedcb|abcdefgh|gfedcba`
    BORDER_TRANSPARENT = 5,     // `uvwxyz|abcdefgh|ijklmno`
 
    BORDER_REFLECT101  = BORDER_REFLECT_101, // same as BORDER_REFLECT_101
    BORDER_DEFAULT     = BORDER_REFLECT_101, // same as BORDER_REFLECT_101
    BORDER_ISOLATED    = 16 // do not look outside of ROI
};
复制代码

中值滤波:

原型:void medianBlur( InputArray src, OutputArray dst, int ksize );

参数1:函数的输入,要1,3或4通道的Mat类型的图像

参数2:目标图像

参数3:孔径的线性尺寸,必须大于1.、必须为奇数,越大,滤布越强。

 参考:
https://blog.csdn.net/weixin_34409895/article/details/112474924

复制代码
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{
    char input;
    Mat Origin = imread("0002.jpg");
    if (!Origin.data)
    {
        cout << "ERROR" << endl;
        return -1;
    }
    Mat OutPut = Mat(Origin.size(), Origin.type());
    namedWindow("OUTPUT", WINDOW_FREERATIO);
    imshow("origin", Origin);

    while (1)
    {
        input = waitKey(0);
        switch (input)
        {
        case 'a':
            medianBlur(Origin, OutPut, 7);
            //最后一个参数为奇数,越大越强
            break;
        case 'b':
            GaussianBlur(Origin, OutPut, Size(5, 5), 15, 10, BORDER_DEFAULT);
            break;
        case 'c':
            blur(Origin,OutPut, Size(5, 5), Point(-1, -1), BORDER_DEFAULT);
            break;
        case 27:
            return 0;
        }
         imshow("OUTPUT", OutPut);
    }

    waitKey(0);
    return 0;
}
复制代码

具体计算等学了计算机视觉再回来补充。

posted @   0MrMKG  阅读(93)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示