#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
// 全局变量声明
Mat g_srcImage,g_dstImage1,g_dstImage2,g_dstImage3; // 存储图片的Mat类型
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()
{
// 改变控制台console字体颜色
system("color5E");
// 载入原图
g_srcImage = imread("D:\\photo\\dongman.jpg",1); // flag > 0 载入彩色图像
if(!g_srcImage.data){printf("Oh,no,读取srcImage错误!");return false;}
// 克隆原图到三个Mat类型中
g_dstImage1 = g_srcImage.clone();
g_dstImage2 = g_srcImage.clone();
g_dstImage3 = g_srcImage.clone();
// 显示原图
namedWindow("【<0>原图窗口】",1);
imshow("【<0>原图窗口】",g_srcImage);
// 方框滤波
namedWindow("【<1>方框滤波】",1);
// 创建轨迹条
createTrackbar("内核值:","【<1>方框滤波】",&g_nBoxFilterValue,40,on_BoxFilter);
on_BoxFilter(g_nBoxFilterValue,0);
// 均值滤波
namedWindow("【<2>均值滤波】",1);
// 创建轨迹条
createTrackbar("内核值:","【<2>均值滤波】",&g_nMeanBlurValue,40,on_MeanBlur);
on_MeanBlur(g_nMeanBlurValue,0);
// 高斯滤波
namedWindow("【<3>高斯滤波】",1);
// 创建轨迹条
createTrackbar("内核值:","【<3>高斯滤波】",&g_nGaussianBlurValue,40,on_GaussianBlur);
on_GaussianBlur(g_nGaussianBlurValue,0);
imshow("【<3>高斯滤波】",g_dstImage3);
// 输出一些帮助信息,\t:为转义字符,表示横向跳到下一个制表位置
cout << endl << "\t嗯。请调整滚动条观察图像效果~\n\n"
<< "\t按下“q”键时,程序退出~!\n"
<< "\n\n\t\t\t by浅墨";
// 按下“q”键时,程序退出
while(char(waitKey(1)) != 'q'){}
return 0;
}
// 方框滤波操作的回调函数
static void on_BoxFilter(int,void*)
{
// 方框滤波操作
boxFilter(g_srcImage,g_dstImage1,-1,Size(g_nBoxFilterValue+1,g_nBoxFilterValue+1));
imshow("【<1>方框滤波】",g_dstImage1);
}
// 均值滤波操作的回调函数
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);
}
// 高斯滤波操作的回调函数
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);
}
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
// 全局变量声明
Mat g_srcImage,g_dstImage1,g_dstImage2,g_dstImage3; // 存储图片的Mat类型
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()
{
// 改变控制台console字体颜色
system("color5E");
// 载入原图
g_srcImage = imread("D:\\photo\\dongman.jpg",1); // flag > 0 载入彩色图像
if(!g_srcImage.data){printf("Oh,no,读取srcImage错误!");return false;}
// 克隆原图到三个Mat类型中
g_dstImage1 = g_srcImage.clone();
g_dstImage2 = g_srcImage.clone();
g_dstImage3 = g_srcImage.clone();
// 显示原图
namedWindow("【<0>原图窗口】",1);
imshow("【<0>原图窗口】",g_srcImage);
// 方框滤波
namedWindow("【<1>方框滤波】",1);
// 创建轨迹条
createTrackbar("内核值:","【<1>方框滤波】",&g_nBoxFilterValue,40,on_BoxFilter);
on_BoxFilter(g_nBoxFilterValue,0);
// 均值滤波
namedWindow("【<2>均值滤波】",1);
// 创建轨迹条
createTrackbar("内核值:","【<2>均值滤波】",&g_nMeanBlurValue,40,on_MeanBlur);
on_MeanBlur(g_nMeanBlurValue,0);
// 高斯滤波
namedWindow("【<3>高斯滤波】",1);
// 创建轨迹条
createTrackbar("内核值:","【<3>高斯滤波】",&g_nGaussianBlurValue,40,on_GaussianBlur);
on_GaussianBlur(g_nGaussianBlurValue,0);
imshow("【<3>高斯滤波】",g_dstImage3);
// 输出一些帮助信息,\t:为转义字符,表示横向跳到下一个制表位置
cout << endl << "\t嗯。请调整滚动条观察图像效果~\n\n"
<< "\t按下“q”键时,程序退出~!\n"
<< "\n\n\t\t\t by浅墨";
// 按下“q”键时,程序退出
while(char(waitKey(1)) != 'q'){}
return 0;
}
// 方框滤波操作的回调函数
static void on_BoxFilter(int,void*)
{
// 方框滤波操作
boxFilter(g_srcImage,g_dstImage1,-1,Size(g_nBoxFilterValue+1,g_nBoxFilterValue+1));
imshow("【<1>方框滤波】",g_dstImage1);
}
// 均值滤波操作的回调函数
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);
}
// 高斯滤波操作的回调函数
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);
}