OpenCV.形态学操作

图像处理的形态学操作有:膨胀、腐蚀、开操作、闭操作、形态学梯度、顶帽、黑帽。

代码演示:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <opencv2/core/utils/logger.hpp>

using namespace std;
using namespace cv;

Mat src, dst;
int element_size = 3;
int max_size = 21;
void callback_demo(int, void*);

int main(int argc, const char* argv[])
{
	utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);	//设置日志输出

	src = imread("E:/picture/11.jpg");
	namedWindow("output", WINDOW_AUTOSIZE);
	createTrackbar("element", "output", &element_size, max_size, callback_demo);
	callback_demo(0,0);
	putText(src, "OpenCv_vigny", Point(20, 30), FONT_HERSHEY_COMPLEX, 1.0,
		Scalar(12, 12, 127), 1, LINE_8, false);
	imshow("input", src);
	waitKey(0);
	destroyAllWindows();
	return 0;
}

void callback_demo(int, void*)
{
	int s = element_size*2+1;
	Mat structelement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));

    //膨胀
	//morphologyEx(src, dst, MORPH_DILATE, structelement, Point(-1, -1), 1);

    //腐蚀	
	//morphologyEx(src, dst, MORPH_ERODE, structelement, Point(-1, -1), 1);

    //开操作(先腐蚀后膨胀)	
	//morphologyEx(src, dst, MORPH_OPEN, structelement, Point(-1, -1), 1);

    //闭操作(先膨胀后腐蚀)	
	//morphologyEx(src, dst, MORPH_CLOSE, structelement, Point(-1, -1), 1);

    //形态学梯度	
	//morphologyEx(src, dst, MORPH_GRADIENT, structelement, Point(-1, -1), 1);

    //顶帽(原图像-开操作)	
	//morphologyEx(src, dst, MORPH_TOPHAT, structelement, Point(-1, -1), 1);

    //黑帽(闭操作-原图像)	
	//morphologyEx(src, dst, MORPH_BLACKHAT, structelement, Point(-1, -1), 1);
	
	imshow("output", dst);
	return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在C++ OpenCV中,形态学操作是一种图像处理技术,用于改变图像的形状和结构。形态学操作通常用于图像分割、去噪、边缘检测等应用中。 在进行形态学操作之前,我们需要获取图像的结构元素。结构元素类似于卷积核,它定义了形态学操作的形状和大小。在OpenCV中,我们可以使用getStructuringElement()函数来获取特定形状和大小的结构元素\[2\]。 getStructuringElement()函数的使用方式如下: ``` Mat element = getStructuringElement(shape, size); ``` 其中,shape参数指定结构元素的形状,可以是矩形、椭圆或十字形。size参数指定结构元素的大小。 获取到结构元素后,我们可以将其用于后续的形态学操作,例如腐蚀、膨胀、开运算、闭运算等。这些操作可以通过调用morphologyEx()函数来实现\[3\]。 morphologyEx()函数的使用方式如下: ``` morphologyEx(src, dst, op, kernel, anchor, iterations, borderType, borderValue); ``` 其中,src参数是输入图像,dst参数是输出图像,op参数指定形态学操作的类型,kernel参数是结构元素,anchor参数是结构元素的锚点,iterations参数是操作的迭代次数,borderType参数是边界处理方式,borderValue参数是边界像素的值。 通过使用getStructuringElement()函数获取结构元素,并结合morphologyEx()函数进行形态学操作,我们可以实现各种图像处理任务。 #### 引用[.reference_title] - *1* *2* [C++ opencv 图像形态学、膨胀、腐蚀、闭、开、顶帽、黑帽](https://blog.csdn.net/HWWH520/article/details/125015959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [opencv c++ 图像形态学操作](https://blog.csdn.net/lucust/article/details/128207799)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

We尼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值