对一副图像进行不同核大小的腐蚀于膨胀,用两个滑动条来进行分别表示腐蚀,膨胀类型和核心大小(3以上)

#include<iostream>
#include<opencv2/opencv.hpp>
#define window1 "【结果1】"
#define window "【原图】"
#define window2 "【结果2】"
#define window3 "【结果3】"
#define window4 "【结果4】"
#define window5 "【结果5】"

using namespace std;
using namespace cv;

Mat src,dst;
Mat element;
int n_kersize = 3;//初始值为3.
int type=0;


void on_type(int, void*);
void on_size(int, void*);
void process();

//对一副图像进行不同核大小的腐蚀于膨胀,用两个滑动条来进行分别表示腐蚀,膨胀类型和核心大小(3以上)
int main()
{
	system("color5E");
	//1.载入原图
	src = imread("猫咪.jpg",0);
	//2.缩放和灰度化
	resize(src,src,Size(),0.6,0.6);
	imshow(window,src);
	//3.进行第一次腐蚀,在结果1上。
	element=getStructuringElement(MORPH_RECT,Size(n_kersize*2+1,n_kersize*2+1),Point(n_kersize,n_kersize));
	erode(src,dst,element);
	imshow(window1,dst);

	//4.创建两个回调函数。
	
	createTrackbar("操作类型",window1,&type,1,on_type);
	createTrackbar("操作尺度",window1,&n_kersize,21,on_size);

	waitKey(0);
	return 0;

}

//5.两个回调函数的定义。
void on_type(int,void*)
{
	process();

}

void on_size(int, void*)
{
	process();

}

//6.操作处理函数的定义。process

void process()
{
	element = getStructuringElement(MORPH_RECT, Size(n_kersize * 2 + 1, n_kersize * 2 + 1), Point(n_kersize, n_kersize));
	if (type == 0)
	{
		erode(src,dst,element);

	}
	else
	{
		dilate(src,dst,element);
	}

	imshow(window1,dst);
}

在这里插入图片描述

在这里插入图片描述
0代表腐蚀:
在这里插入图片描述
在这里插入图片描述
1代表膨胀:

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值