OPENCV C++(四)形态学操作+连通域统计

形态学操作

先得到一个卷积核

cpp 复制代码
Mat kernel = getStructuringElement(MORPH_RECT,Size(5,5));

第一个是形状 第二个是卷积核大小

依次为腐蚀 膨胀 开运算 闭运算

cpp 复制代码
Mat erodemat,dilatemat,openmat,closemat;
	morphologyEx(result1, erodemat, MORPH_ERODE, kernel);
	morphologyEx(result1, dilatemat, MORPH_DILATE, kernel);
	morphologyEx(result1, openmat, MORPH_OPEN, kernel);
	morphologyEx(result1, closemat, MORPH_CLOSE, kernel);

tips:这些都是针对于二值化图像操作的

单独的也有 例如腐蚀函数

cpp 复制代码
erode(thresh_Mat1, erode_Mat1, element, Point(-1, -1), 2);

这个-1 -1是默认的 不变

2是做两次腐蚀的意思

连通域标记

先定义返回的值

cpp 复制代码
Mat stats;
Mat centroids;
Mat labels;

stats:记录了每个连通区域的信息,是一个5列的矩阵,每一行对应一个连通区域,分别为连通区域外接矩形的x、y、width、height和面积,例如stats[0][4]就是第一个连通区域的面积

centroids:连通域的中心点,没什么大用

labels:输出的labels是一个和原图一样大小的矩阵,原图中检测到的连通图的位置,对应的labels矩阵值为1,其余值为0,算是一种特殊的标记

连通域函数

cpp 复制代码
int nComp = connectedComponentsWithStats(dilatemat, labels, stats, centroids, 8, CV_32S);

处理的图像(膨胀后的图一般是)

输出矩阵(上面有描述)

连通域信息

中心点

8代表8连通,4代表4连通

CV_32S默认参数

ncomp返回的是有几个连通域,但也包括了背景。

标记连通域方法

cpp 复制代码
for (int i = 1; i < nComp; i++)
	{
		//定义Rect类
		Rect bandbox;
		


		
		bandbox.x = stats.at<int>(i, 0);
		bandbox.y = stats.at<int>(i, 1);

		bandbox.width = stats.at<int>(i, 2);
		bandbox.height = stats.at<int>(i, 3);
		
		rectangle(image, bandbox, CV_RGB(255,255,255), 1, 8, 0);
	}

这里stats是连通域信息,为什么不能用stats[i][x]这样呢 因为stats是Mat类型,而不是数组类型,所以要按照规定来以后都这样写

焊点的统计

需要用腐蚀操作将线腐蚀掉

回形针的统计

需要利用开运算 膨胀一点图像

需要利用长宽比统计数目 因为图片中有瑕疵,左边有白色痕迹

cpp 复制代码
for (int i = 1; i < nComp5; i++)
	{
		int width = stats5.at<int>(i, 2);
		int height = stats5.at<int>(i, 3);
		int ratio = height / width;
		if (ratio > 10)
		{
			nComp5--;
		}
	}

一般很多都需要这样判断统计的,这是利用长宽比 还有面积等等等

相关推荐
HackTwoHub27 分钟前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
段一凡-华北理工大学35 分钟前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章08:多模态数据融合:让数据更聪明
人工智能·python·高炉炼铁·ai赋能·工业智能体·高炉炉温
网络工程小王1 小时前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
HIT_Weston1 小时前
63、【Agent】【OpenCode】用户对话提示词(示例)
人工智能·agent·opencode
CV-杨帆1 小时前
Phi-4-mini-flash-reasoning 部署安装与推理测试完整记录
人工智能
MediaTea2 小时前
AI 术语通俗词典:C4.5 算法
人工智能·算法
海兰2 小时前
【第27篇】Micrometer + Zipkin
人工智能·spring boot·alibaba·spring ai
DeepReinforce2 小时前
四、AI量化投资:使用akshare获取A股主板20260430筛选后的涨停股票
人工智能
qcx232 小时前
【AI Agent通识九课】02 · Agent 的“思考回路“长啥样?
人工智能·ai·llm·agent
翔云1234563 小时前
端侧推理:全面解析与深度洞察
人工智能·ai·大模型