您的位置:首页 > 其它

图像滤波,均值和高斯-------学习记录(8)

2015-06-09 16:55 260 查看
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace std;
using namespace cv;

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

Mat src, dst;
char window_name[] = "Fliter Demo 1";

/// 函数申明
int display_caption( char* caption ); //用于滤波器名称显示
int display_dst( int delay );      //用于于滤波执行时间

int main(int argc, char* argv[])
{
	namedWindow( window_name, CV_WINDOW_AUTOSIZE );
	src = imread("lena.jpg");
	//载入原图像
	if( display_caption( "Original Image" ) != 0 ) { return 0; }
	dst = src.clone();
	if ( display_dst(DELAY_CAPTION) != 0){return 0;}
	
	//使用均值滤波函数
	if( display_caption( "Homogeneous Blur" ) != 0 ) { return 0; }

	for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 )
	{ 
		blur( src, dst, Size( i, i ), Point(-1,-1) );
		if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } 
	}

	//使用高斯滤波
	if( display_caption( "Gaussian Blur" ) != 0 ) { return 0; }

	for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 )
	{ GaussianBlur( src, dst, Size( i, i ), 0, 0 );
	if( display_dst( DELAY_BLUR ) != 0 ) { return 0; } }

	display_caption( "End: Press a key!" );
	waitKey(0);
	return 0;
}

int display_caption(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 display_dst( int delay ){
	imshow( window_name, dst );
	int c = waitKey( DELAY_BLUR );
	if ( c >= 0)
	{
		return -1;
	}
	return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: