各种滤波综合示例+进度条(方框——均值——高斯——中值——双边)

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;!watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIwNzM5MDYx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
const int  SliderMaxValue=50;
Mat src, src1, src2, src3, src4, src5;

/*-----------------------各滤波器内核值定义--------------------*/
int src1_BoxFilterValue = 6;
int src2_MeanFilterValue = 10;
int src3_GaussianFilterValue = 6;
int src4_MedianFilterValue = 10;
int src5_BilateralFilterValue = 10;

/*-------------------------轨迹回调函数全局声明------------------------*/
void BoxFilter_TrackBar(int, void *);
void MeanFilter_TrackBar(int, void *);
void GaussianFilter_TrackBar(int, void *);
void MedianFilter_TrackBar(int, void *);
void BilateralFilter_TrackBar(int, void *);

int main()
{
    src = imread("1.jpg");
    if (!src.data)
    {
        printf("Could not load the image!\n");
        return -1;
    }


  /*------------------------------复制原图像到4个Mat 类中-------------------------*/
    src1 = src.clone();
    src2 = src.clone();
    src3 = src.clone();
    src4 = src.clone();
    src5 = src.clone();

    //显示原图形
    namedWindow("【0原图窗口】");
    imshow("【0原图窗口】",src);


    /*---------------------------------方框滤波-------------------------------------------*/
    namedWindow("【1方框滤波】");
    createTrackbar("内核值:","【1方框滤波】",&src1_BoxFilterValue,SliderMaxValue, BoxFilter_TrackBar);
    BoxFilter_TrackBar(src1_BoxFilterValue,0);
    //imshow("【1方框滤波】",src1);

    /*---------------------------------均值滤波-------------------------------------------*/
    namedWindow("【2均值滤波】");
    createTrackbar("内核值:", "【2均值滤波】", &src2_MeanFilterValue, SliderMaxValue, MeanFilter_TrackBar);
    MeanFilter_TrackBar(src2_MeanFilterValue, 0);
    //imshow("【2均值滤波】", src2);

    /*---------------------------------高斯滤波-------------------------------------------*/
    namedWindow("【3高斯滤波】");
    createTrackbar("内核值:", "【3高斯滤波】", &src3_GaussianFilterValue, SliderMaxValue, GaussianFilter_TrackBar);
    GaussianFilter_TrackBar(src3_GaussianFilterValue, 0);
    //imshow("【3高斯滤波】", src3);

    /*---------------------------------------中值滤波----------------------------------------------*/
    namedWindow("【4中值滤波】");
    createTrackbar("参数值:", "【4中值滤波】", &src4_MedianFilterValue, SliderMaxValue, MedianFilter_TrackBar);
    MedianFilter_TrackBar(src4_MedianFilterValue, 0);
    //imshow("【4中值滤波】", src4);

    /*-----------------------------------双边滤波-------------------------------------------*/
    namedWindow("【5双边滤波】");
    createTrackbar("参数值:", "【5双边滤波】", &src5_BilateralFilterValue, SliderMaxValue, BilateralFilter_TrackBar);
    BilateralFilter_TrackBar(src5_BilateralFilterValue, 0);
    //imshow("【5双边滤波】", src5);

    waitKey(0);
    //while (char(waitKey(1))!='q') {}
    return 0;
}




/*-------------------------------------------------------------回调函数--------------------------------------------------------------------*/


/*---------------------------------------方框滤波回调函数--------------------------------------*/

void BoxFilter_TrackBar(int, void *)
{
    boxFilter(src,src1,-1,Size(src1_BoxFilterValue+1, src1_BoxFilterValue+1));
    imshow("【1方框滤波】",src1);

}

/*---------------------------------------均值滤波回调函数--------------------------------------*/

void MeanFilter_TrackBar(int, void *)
{
    blur(src, src2,Size(src2_MeanFilterValue + 1, src2_MeanFilterValue + 1),Point(-1,-1));
    imshow("【2均值滤波】", src2);

}

/*---------------------------------------高斯滤波回调函数--------------------------------------*/
void GaussianFilter_TrackBar(int, void *)
{

    GaussianBlur(src,src3, Size(src3_GaussianFilterValue*2 + 1, src3_GaussianFilterValue*2 + 1),0,0);
    imshow("【3高斯滤波】", src3);
}

/*---------------------------------------中值滤波回调函数--------------------------------------*/
void MedianFilter_TrackBar(int, void *)
{

    medianBlur(src, src4,src4_MedianFilterValue * 2 + 1);
    imshow("【4中值滤波】", src4);
}

/*---------------------------------------双边滤波回调函数--------------------------------------*/
void BilateralFilter_TrackBar(int, void *)
{

    bilateralFilter(src, src5, src5_BilateralFilterValue,src5_BilateralFilterValue * 2 , src5_BilateralFilterValue / 2);
    imshow("【5双边滤波】", src5);
}

原始图片1方框滤波
2均值滤波3高斯滤波
4中值滤波5双边滤波

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值