#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
Mat g_srcImage, g_dstImage1, g_dstImage2, g_dstImage3;
int g_nBoxFilterValue = 3;
int g_nMeanBlurValue = 3;
int g_nGaussianBlurValue = 3;
static void on_BoxFilter(int, void *);
static void on_MeanBlur(int,void *);
static void on_GaussianBlur(int, void *);
int main()
{
//loading the initial Image and clone the initial Image to 3 matrices
g_srcImage = imread("3.jpg",1);
g_dstImage1 = g_srcImage.clone();
g_dstImage2 = g_srcImage.clone();
g_dstImage3 = g_srcImage.clone();
//show the initial Image
namedWindow("[<0>initial Image]");
imshow("[<0>initial Image]",g_srcImage);
//--------------------<1>BoxFilter--------------------//
namedWindow("[<1>BoxFilter]");
createTrackbar("Kernel value: ","[<1>BoxFilter]",&g_nBoxFilterValue,40,on_BoxFilter);
on_BoxFilter(g_nBoxFilterValue,0);
//---------------------------------------------------//
//-------------------<2>MeanBlur---------------------//
namedWindow("[<2>MeanBlur]");
createTrackbar("Kernel value: ", "[<2>MeanBlur]",&g_nMeanBlurValue,40,on_MeanBlur);
on_MeanBlur(g_nMeanBlurValue,0);
//---------------------------------------------------//
//-------------------<3>GaussianBlur---------------------//
namedWindow("[<3>GaussianBlur]");
createTrackbar("Kernel value: ", "[<3>GaussianBlur]",&g_nGaussianBlurValue,40,on_GaussianBlur);
on_GaussianBlur(g_nGaussianBlurValue,0);
//-------------------------------------------------------//
cout << endl << "\t please move the bar and observe the change\n\n " << "\t press \"q\"to quit\n";
while (char(waitKey(0)) != 'q') {}
return 0;
}
//-----------------------------------------------------------//
// Function of on_BoxFilter()
//-----------------------------------------------------------//
static void on_BoxFilter(int, void *)
{
boxFilter(g_srcImage,g_dstImage1,-1,Size(g_nBoxFilterValue+1,g_nBoxFilterValue+1));
imshow("[<1>BoxFilter]",g_dstImage1);
}
//-----------------------------------------------------------//
// Function of 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>MeanBlur]",g_dstImage2);
}
//-----------------------------------------------------------//
// Function of 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>GaussianBlur]",g_dstImage3);
}
Opencv 学习笔记之图像线性滤波综合示例
最新推荐文章于 2024-04-03 16:27:54 发布