opencv学习图像处理形态学腐蚀和膨胀

膨胀就是求局部最大值的操作(dilate),腐蚀就是求局部最小值的操作(erode),无论是膨胀操作还是腐蚀操作就是蒋图片或者额图像的一部分区域,标记为A与核标记为B进行卷积。

代码:

#include"stdafx.h"
#include <opencv2/core/utility.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include"opencv2/core/core.hpp"
#include <iostream>

using namespace cv;
using namespace std;

// 定义全局变量
Mat image, dstImage;
int g_nTrackbarNumer = 0;
int g_nStructElementSize = 3;
//函数声明
void process();
void on_TrackbarNumChange(int, void*);
void on_ElementSizeChange(int, void*);

int main() {
	system("color 5E");
	//读取图片
	image = imread("E:\\pictures\\For_Project\\New_opencv\\Sceen\\1.jpg");
	namedWindow("【原始图像】", 1);
	imshow("【原始图像】", image);

	namedWindow("【效果图】", 1);
	//创建滑动条
	createTrackbar("腐蚀/膨胀", "【效果图】", &g_nTrackbarNumer, 1, on_TrackbarNumChange);
	createTrackbar("内核尺寸", "【效果图】", &g_nStructElementSize, 21, on_ElementSizeChange);
	//分别调用回调函数
	on_TrackbarNumChange(g_nTrackbarNumer, 0);
	on_ElementSizeChange(g_nStructElementSize, 0);

	//等待键盘按键‘q’退出
	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(image, dstImage, element);
	}
	else {
		//膨胀操作
		dilate(image, dstImage, element);
	}

	imshow("【效果图】", dstImage);
}

void on_TrackbarNumChange(int,void*) {
	process();
}

void on_ElementSizeChange(int, void *) {
	process();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值