OpenCV自帶例子(七)圖像平滑處理

#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;

//全局變量
int DELAY_CAPTION = 1500;
int DELAY_BLUR = 100;
int MAX_KERNEL_LENGTH = 31;

Mat src, dst;

char window_name[] = "Filter Demo 1";

int display_caption( char* caption )
{
	dst = Mat::zeros( src.size(), src.type() );
	putText( dst, 
		caption, 
		Point( src.cols/6, 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 );
	if ( c >= 0 )
	{
		return -1;
	}
	return 0;
}

//Main 函數
int main( int argc, char** argv )
{
	namedWindow( window_name, CV_WINDOW_AUTOSIZE );
	
	//讀取圖像
	src = imread( "D:\\image\\aa.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 ) );
		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);
		if ( display_dst( DELAY_BLUR ) != 0 )
		{
			return 0;
		}
	}

	//中值模糊
	if ( display_caption( "Median Blur" ) != 0 )
	{
		return 0;
	}
	for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 )
	{
		medianBlur( src, dst, i );
		if ( display_dst( DELAY_BLUR ) != 0 )
		{
			return 0;
		}
	}

	//雙邊濾波
	if ( display_caption( "Bilateral Blur" ) != 0 )
	{
		return 0;
	}
	for ( int i = 1; i < MAX_KERNEL_LENGTH; i = i + 2 )
	{
		bilateralFilter( src, dst, i, i*2, i/2);
		if ( display_dst( DELAY_BLUR ) != 0 )
		{
			return 0;
		}
	}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章