腐蚀erode与膨胀dilate综合示例

//-----------------------------------【腐蚀erode与膨胀dilate综合示例】-----------------------------
// Written by Robotkang
// Date:2018.06.23
//----------------------------------------------------------------------------------------------

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream> //标准输入输出流

using namespace std;
using namespace cv;

Mat g_srcImage,g_dstImage;
int g_nTrackbarNumer = 0;//0表示腐蚀erode,1表示膨胀dilate 
int g_nStructElementSize =3;//内核矩阵的尺寸


void Process();
void on_TrackbarNumChange(int,void *);
void on_ElementSizeChange(int,void *);
void ShowHelpText();

int main()
{
	system("color 5E");//改变console字体背景颜色

	g_srcImage =imread("1.jpg");
	if(!g_srcImage.data){ printf("error");return false;}
	ShowHelpText();
	namedWindow("原始图");
	imshow("原始图",g_srcImage);

	namedWindow("效果图");

	Mat element = getStructuringElement(MORPH_RECT, Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1),Point(g_nStructElementSize,g_nStructElementSize));
	erode(g_srcImage,g_dstImage, element);
	imshow("效果图",g_srcImage);

	createTrackbar("腐蚀/膨胀","效果图",&g_nTrackbarNumer , 1 , on_TrackbarNumChange);
	createTrackbar("内核尺寸","效果图",&g_nStructElementSize,21,on_ElementSizeChange);

	cout<<endl<<"\t运行成功,请调整滚动条观察图像效果~\n\n"
<<"\t按下“Q”键时,程序退出。\n";

	while (char(waitKey(1))!='Q'){}
	return 0;
}

void Process()
{
	Mat element = getStructuringElement(MORPH_RECT,Size(2*g_nStructElementSize+1,2+g_nStructElementSize+1),Point(g_nStructElementSize,g_nStructElementSize));
	if(g_nTrackbarNumer==0){
		erode(g_srcImage,g_dstImage,element);
	}
	else{
		dilate(g_srcImage,g_dstImage,element);
	}
	imshow("效果图",g_dstImage);
	}


void on_TrackbarNumChange(int,void *)
{
	Process();
}
void on_ElementSizeChange(int, void *)
{
	Process();
}


//-----------------------------------【ShowHelpText( )函数】-----------------------------
// 描述:输出一些帮助信息
//----------------------------------------------------------------------------------------------
void ShowHelpText()
{
//输出欢迎信息和OpenCV版本
printf("\n\n\t\t\t       《OpenCV3编程入门》\n");
printf("\n\n\t\t\t此为本书OpenCV2版的第40个配套示例程序\n");
printf("\n\n\t\t\t 当前使用的OpenCV版本为:" CV_VERSION );
printf("\n\n\t\t\t         www.robotkang.cc");
printf("\n\n  ----------------------------------------------------------------------------\n");
}

运行效果:


----------------------------------------------------------------------------

网址:教你高效且优雅的访问国外的网站(点击此处)


---------------------------------------------------------------------------



猜你喜欢

转载自blog.csdn.net/robotkang/article/details/80782349
今日推荐