zoukankan      html  css  js  c++  java
  • 均值模糊,高斯模糊,中值模糊,双边模糊

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    using namespace cv;
    using namespace std;
    
    
    const int g_nTrackbarMaxValue = 9;     //定义轨迹条最大值
    int g_nTrackbarValue;                   //定义轨迹条初始值
    int g_nKernelValue;                     //定义kernel尺寸
    Mat src, dst;
    
    //均值滤波
    void on_kernelTrackbar(int,void *)
    {
        //根据输入值重新计算kernel尺寸
        g_nKernelValue = g_nTrackbarValue * 2 + 1;
    
        //均值滤波函数
        blur(src, dst, Size(g_nKernelValue, g_nKernelValue));
    
        imshow("均值滤波", dst);
    }
    
    //高斯滤波
    void on_kernelTrackbar2(int, void*)
    {
        //根据输入值重新计算kernel尺寸
        g_nKernelValue = g_nTrackbarValue * 2 + 1;
    
        //均值滤波函数
        GaussianBlur(src, dst, Size(g_nKernelValue, g_nKernelValue),11,11);
    
        imshow("均值滤波", dst);
    }
    
    int main()
    {
        
        //原图
        src = imread(".//pic//kate.png",IMREAD_UNCHANGED);
        
        if (!src.data)
        {
            cout << "load error" << endl;
            return -1;
        }
        
    
        namedWindow("均值滤波", WINDOW_AUTOSIZE);   //定义滤波后图像显示窗口属性
        //定义轨迹条名称和最大值
        char kernelName[20];
        sprintf(kernelName, "kernel尺寸 %d", g_nTrackbarMaxValue);
    
        //创建轨迹条
        createTrackbar(kernelName, "均值滤波", &g_nTrackbarValue, g_nTrackbarMaxValue, on_kernelTrackbar2);
        on_kernelTrackbar(g_nTrackbarValue, 0);
    
    
        waitKey(0);
        return 0;
    }
    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    using namespace cv;
    using namespace std;
    
    Mat src, dst;
    
    
    
    int main()
    {
        
        //原图
        src = imread(".//pic//1.png",IMREAD_UNCHANGED);
        
        if (!src.data)
        {
            cout << "load error" << endl;
            return -1;
        }
        
        namedWindow("input image", CV_WINDOW_AUTOSIZE);
        imshow("input image", src);
    
        //中值模糊,7为卷积核大小
        //medianBlur(src, dst, 7);
        
        //双边模糊
        //15为计算的半径
        //150:值域上的方差  这个参数的值越大,
        //就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
        //3:空间域的方差   他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。
        bilateralFilter(src, dst, 15, 150, 3);
        
    
        imshow("双边滤波", dst);
    
        //边缘锐化
        Mat resultImg;
        Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
        filter2D(dst, resultImg, -1, kernel, Point(-1, -1), 0);
        imshow("Final", resultImg);
        waitKey(0);
        return 0;
    }
  • 相关阅读:
    物喻十例
    小写金额转换成大写
    让电脑启动更快十招
    计算机技术
    DOS 全集
    python基础 day14 匿名函数 内置函数 闭包
    python基础 day13 生成器,列表推导式、生成器表达式
    python基础 day12 函数名的应用 新特性:格式化输出 f-string 迭代器
    python基础 day 11 函数参数
    python基础 day 10 函数初识
  • 原文地址:https://www.cnblogs.com/xiaochi/p/11997023.html
Copyright © 2011-2022 走看看