Homogeneous_Gaussian_Median_Bilateral_blure

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int DELAY_CAPTION = 1500;
int DELAY_BLUR    = 100;
int MAX_KERNEL_LENGTH = 31;

Mat src;
Mat dst;

char window_name[] = "Filter Methods";


// 显示使用的平滑方法标题
int displayCaption(char* caption) {

	dst = Mat::zeros(src.size(), src.type());

	putText(dst, caption,
		Point(src.cols/4, src.rows/2),
		CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255));

	imshow(window_name, dst);

	int c = waitKey(DELAY_CAPTION);
	if (c >= 0) {

		return -1;
	}

	return 0;

}


// 显示保持时间
int displayDst(int delay) {

	imshow(window_name, dst);

	int c = waitKey(DELAY_CAPTION);
	if (c >= 0) {

		return -1;
	}

	return 0; 
}




int main(int argc, char* argv[]) {

	const char* filename = "tiger.jpg";
	src = imread(filename, CV_LOAD_IMAGE_COLOR);
	namedWindow( window_name, CV_WINDOW_AUTOSIZE );
   

	if (displayCaption("Orignal Image") != 0) {
		return 0;
	}

	if (displayDst(DELAY_BLUR) != 0) {

		return 0;
	}

    //使用均值平滑-----------------------------------------------------------------------
	if (displayCaption("Homogeneous Blur") != 0) {

		return 0;
	}

	for(int i = 1; i < MAX_KERNEL_LENGTH; i += 2) {

		blur(src, dst, Size(i, i), Point(-1, -1));

		if (displayDst(DELAY_BLUR) != 0) {

			return 0;
		}

	}


    
	// 使用高斯平滑-----------------------------------------------------------------------
	if (displayCaption("Gaussian  Blur") != 0) {

		return 0;
	}

	for(int i = 1; i < MAX_KERNEL_LENGTH; i += 2) {

        GaussianBlur(src, dst, Size(i, i), 0, 0);		

		if (displayDst(DELAY_BLUR) != 0) {

			return 0;
		}
	}



	// 使用中值平滑--------------------------------------------------------------------------
	if (displayCaption("Median Blur") != 0) {

		return 0;
	}

	for(int i = 0; i < MAX_KERNEL_LENGTH; i += 2) {

		medianBlur(src, dst, i);

		if (displayDst(DELAY_BLUR) != 0) {

			return 0;
		}
	}



	// 使用双边平滑---------------------------------------------------------------------------
	if (displayCaption("Bilateral Blur") != 0) {

		return 0;
	}

	for(int i = 0; i < MAX_KERNEL_LENGTH; i += 2) {

		bilateralFilter(src, dst, i, i*2, i/2);

		if (displayDst(DELAY_BLUR) != 0) {

			return 0;
		}
	}
	
	waitKey(0);

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值