opencv----滤波函数:方框滤波、均值滤波、高斯滤波、中值滤波、双边滤波

来源:互联网 发布:edrawmax mac 激活码 编辑:程序博客网 时间:2024/05/01 17:24
#include <opencv2/core/core.hpp>  #include<opencv2/highgui/highgui.hpp>  #include<opencv2/imgproc/imgproc.hpp>  #include <iostream>     using namespace std;  using namespace cv;     Mat g_srcImage,g_dstImage1,g_dstImage2,g_dstImage3,g_dstImage4,g_dstImage5;  int g_nBoxFilterValue=6;  //方框滤波内核值  int g_nMeanBlurValue=10;  //均值滤波内核值  int g_nGaussianBlurValue=6;  //高斯滤波内核值  int g_nMedianBlurValue=10;  //中值滤波参数值  int g_nBilateralFilterValue=10;  //双边滤波参数值     //轨迹条回调函数  static void on_BoxFilter(int, void *);            //方框滤波  static void on_MeanBlur(int, void *);           //均值块滤波器  static void on_GaussianBlur(int, void *);                    //高斯滤波器  static void on_MedianBlur(int, void *);               //中值滤波器  static void on_BilateralFilter(int, void*);                    //双边滤波器           //-----------------------------------【main( )函数】--------------------------------------------  //            描述:控制台应用程序的入口函数,我们的程序从这里开始  //-----------------------------------------------------------------------------------------------  int main(  )  {         system("color 5E");             //载入原图     g_srcImage= imread( "c:/1.jpg", 1 );         if(!g_srcImage.data ) { printf("Oh,no,读取srcImage错误~!\n"); return false; }            //克隆原图到四个Mat类型中         g_dstImage1= g_srcImage.clone( );         g_dstImage2= g_srcImage.clone( );         g_dstImage3= g_srcImage.clone( );         g_dstImage4= g_srcImage.clone( );         g_dstImage5= g_srcImage.clone( );            //显示原图         namedWindow("【<0>原图窗口】", 1);         imshow("【<0>原图窗口】",g_srcImage);               //=================【<1>方框滤波】=========================         //创建窗口         namedWindow("【<1>方框滤波】", 1);         //创建轨迹条         createTrackbar("内核值:", "【<1>方框滤波】",&g_nBoxFilterValue, 50,on_BoxFilter );         on_BoxFilter(g_nBoxFilterValue,0);         imshow("【<1>方框滤波】", g_dstImage1);         //=====================================================               //=================【<2>均值滤波】==========================         //创建窗口         namedWindow("【<2>均值滤波】", 1);         //创建轨迹条         createTrackbar("内核值:", "【<2>均值滤波】",&g_nMeanBlurValue, 50,on_MeanBlur );         on_MeanBlur(g_nMeanBlurValue,0);         //======================================================               //=================【<3>高斯滤波】===========================         //创建窗口         namedWindow("【<3>高斯滤波】", 1);         //创建轨迹条         createTrackbar("内核值:", "【<3>高斯滤波】",&g_nGaussianBlurValue, 50,on_GaussianBlur );         on_GaussianBlur(g_nGaussianBlurValue,0);         //=======================================================               //=================【<4>中值滤波】===========================         //创建窗口         namedWindow("【<4>中值滤波】", 1);         //创建轨迹条         createTrackbar("参数值:", "【<4>中值滤波】",&g_nMedianBlurValue, 50,on_MedianBlur );         on_MedianBlur(g_nMedianBlurValue,0);         //=======================================================               //=================【<5>双边滤波】===========================         //创建窗口         namedWindow("【<5>双边滤波】", 1);         //创建轨迹条         createTrackbar("参数值:", "【<5>双边滤波】",&g_nBilateralFilterValue, 50,on_BilateralFilter);         on_BilateralFilter(g_nBilateralFilterValue,0);         //=======================================================            return 0;  }     //-----------------------------【on_BoxFilter( )函数】------------------------------------  //            描述:方框滤波操作的回调函数  //-----------------------------------------------------------------------------------------------  static void on_BoxFilter(int, void *)  {         //方框滤波操作         boxFilter(g_srcImage, g_dstImage1, -1,Size( g_nBoxFilterValue+1, g_nBoxFilterValue+1));         //显示窗口         imshow("【<1>方框滤波】", g_dstImage1);  }     //-----------------------------【on_MeanBlur( )函数】------------------------------------  //            描述:均值滤波操作的回调函数  //-----------------------------------------------------------------------------------------------  static void on_MeanBlur(int, void *)  {         blur(g_srcImage, g_dstImage2, Size( g_nMeanBlurValue+1, g_nMeanBlurValue+1),Point(-1,-1));         imshow("【<2>均值滤波】", g_dstImage2);     }     //-----------------------------【on_GaussianBlur( )函数】------------------------------------  //            描述:高斯滤波操作的回调函数  //-----------------------------------------------------------------------------------------------  static void on_GaussianBlur(int, void *)  {         GaussianBlur(g_srcImage, g_dstImage3, Size( g_nGaussianBlurValue*2+1,g_nGaussianBlurValue*2+1 ), 0, 0);         imshow("【<3>高斯滤波】", g_dstImage3);  }        //-----------------------------【on_MedianBlur( )函数】------------------------------------  //            描述:中值滤波操作的回调函数  //-----------------------------------------------------------------------------------------------  static void on_MedianBlur(int, void *)  {         medianBlur( g_srcImage, g_dstImage4, g_nMedianBlurValue*2+1 );         imshow("【<4>中值滤波】", g_dstImage4);  }        //-----------------------------【on_BilateralFilter( )函数】------------------------------------  //            描述:双边滤波操作的回调函数  //-----------------------------------------------------------------------------------------------  static void on_BilateralFilter(int, void *)  {         bilateralFilter( g_srcImage, g_dstImage5, g_nBilateralFilterValue, g_nBilateralFilterValue*2,g_nBilateralFilterValue/2 );         imshow("【<5>双边滤波】", g_dstImage5);  }  










阅读全文
0 0
原创粉丝点击