opencv简单学习方框滤波,均值滤波,高斯滤波

代码:

#include"stdafx.h"
#include 
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include"opencv2/core/core.hpp"
#include 

using namespace cv;
using namespace std;

// 定义全局变量
Mat image, dstImage1, dstImage2, dstImage3;
int g_nBoxFilterValue = 3;
int g_nMeanBlurValue = 3;
int g_nGaussianBlurValue = 3;
//函数声明
void on_BoxFilter(int, void*);
void on_MeanBlur(int, void*);
void on_GaussianBlur(int, void*);


int main() {
	system("color 5E");
	//读取图片
	image = imread("E:\\pictures\\For_Project\\New_opencv\\zaosheng.jpg");
	namedWindow("【原始图像】", 1);
	imshow("【原始图像】", image);

	Mat dstImage1 = image.clone();
	Mat dstImage2 = image.clone();
	Mat dstImage3 = image.clone();
	
	double time1 = static_cast(getTickCount());
	namedWindow("【方框滤波】", 1);
	createTrackbar("内核值:", "【方框滤波】", &g_nBoxFilterValue, 40, on_BoxFilter);
	on_BoxFilter(g_nBoxFilterValue, 0);
	//计算运行时间并输出  
	time1 = ((double)getTickCount() - time1) / getTickFrequency();
	cout << "方框滤波方法运行时间为:" << time1 << "秒" << endl;

	double time2 = static_cast(getTickCount());
	namedWindow("【均值滤波】", 1);
	createTrackbar("内核值:", "【均值滤波】", &g_nMeanBlurValue, 40, on_MeanBlur);
	on_MeanBlur(g_nMeanBlurValue, 0);
	//计算运行时间并输出  
	time2 = ((double)getTickCount() - time2) / getTickFrequency();
	cout << "均值滤波方法运行时间为:" << time2 << "秒" << endl;

	double time3 = static_cast(getTickCount());
	namedWindow("【高斯滤波】", 1);
	createTrackbar("内核值:", "【高斯滤波】", &g_nGaussianBlurValue, 40, on_GaussianBlur);
	on_GaussianBlur(g_nGaussianBlurValue, 0);
	//计算运行时间并输出  
	time3 = ((double)getTickCount() - time3) / getTickFrequency();
	cout << "高斯滤波方法运行时间为:" << time3 << "秒" << endl;


	//等待键盘按键‘q’退出
	while (char(waitKey(1)) != 'q') {}
	return 0;
}

void on_BoxFilter(int, void*) {
	boxFilter(image, dstImage1, -1, Size(g_nBoxFilterValue + 1, g_nBoxFilterValue + 1));
	imshow("【方框滤波】", dstImage1);
}

void on_MeanBlur(int, void*) {
	blur(image, dstImage2, Size(g_nMeanBlurValue + 1, g_nMeanBlurValue + 1),Point(-1,-1));
	imshow("【均值滤波】", dstImage2);
}

void on_GaussianBlur(int, void*) {
	GaussianBlur(image, dstImage3, Size(g_nGaussianBlurValue*2 + 1, g_nGaussianBlurValue*2 + 1),0,0);
	imshow("【高斯滤波】", dstImage3);
}

opencv简单学习方框滤波,均值滤波,高斯滤波_第1张图片

你可能感兴趣的:(opencv简单学习方框滤波,均值滤波,高斯滤波)