OPenCV结构分析与形状描述符(5)查找图像中的连通组件的函数connectedComponents()的使用

news2024/11/14 16:37:53
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

connectedComponents 函数计算布尔图像的连通组件标签图像。

该函数接受一个具有4或8连通性的二值图像,并返回 N,即标签总数(标签范围为 [0, N-1],其中 0 代表背景标签)。ltype 参数指定了输出标签图像的类型,这是基于标签总数或源图像中的像素总数的一个重要考虑因素。ccltype 参数指定了要使用的连通组件标签算法,目前支持 Bolelli(Spaghetti)[31]、Grana(BBDT)[108] 和 Wu(SAUF)[296] 算法,详见 ConnectedComponentsAlgorithmsTypes。请注意,SAUF 算法强制使用行主序(row-major order)的标签,而 Spaghetti 和 BBDT 不强制。如果至少有一个允许的并行框架被启用,并且图像的行数至少是 getNumberOfCPUs 返回值的两倍,该函数将使用并行版本的算法。

函数原型1


int cv::connectedComponents
(
	InputArray 	image,
	OutputArray 	labels,
	int 	connectivity,
	int 	ltype,
	int 	ccltype 
)		

参数1

  • 参数image 待标记的8位单通道图像。
  • 参数labels 目标标记图像。
  • 参数connectivity 8或4,分别表示8连通性或4连通性
  • 参数ltype 输出图像标签类型。目前支持 CV_32S 和 CV_16U。
  • 参数ccltype 连通组件算法类型(详见 ConnectedComponentsAlgorithmsTypes).

函数原型2

这是一个重载成员函数,提供方便。它与上述原型1的不同之处仅在于它接受的参数不同。

int cv::connectedComponents	
(
	InputArray 	image,
	OutputArray 	labels,
	int 	connectivity = 8,
	int 	ltype = CV_32S 
)		

参数2

  • 参数image: 要标记的8位单通道图像。
  • 参数labels: 目标标记图像(输出)。
  • 参数connectivity: 连通性设置,8表示8邻接,4表示4邻接。
  • 参数ltype: 输出图像的标签类型。目前支持 CV_32S(32位有符号整型)和 CV_16U(16位无符号整型)。

代码示例

#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 创建一个简单的二值图像
    cv::Mat img = cv::Mat::zeros( 300, 300, CV_8UC1 );

    // 添加一些连通区域
    cv::rectangle( img, cv::Rect( 50, 50, 100, 100 ), cv::Scalar( 255 ), cv::FILLED );
    cv::rectangle( img, cv::Rect( 150, 150, 100, 100 ), cv::Scalar( 255 ), cv::FILLED );

    // 显示原始二值图像
    cv::imshow( "Binary Image", img );
   
    // 初始化输出标签图像
    cv::Mat labels;
    int nr_components;

    // 使用8连通性来寻找连通组件
    nr_components = cv::connectedComponents( img, labels, 8, CV_32S, cv::CCL_WU );

    // 打印连通组件的数量
    std::cout << "Number of components: " << nr_components << std::endl;

    // 将标签图像转换为8位单通道图像
    cv::Mat labels_8u;
    labels.convertTo( labels_8u, CV_8U, 255.0 / ( nr_components - 1 ) );

    // 将标签图像可视化
    cv::Mat vis;
    cv::applyColorMap( labels_8u, vis, cv::COLORMAP_JET );

    // 显示标签图像
    cv::imshow( "Labeled Image", vis );
    cv::waitKey( 0 );

    return 0;
}

运行结果

终端输出:

Number of components: 2

图像输出:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2118923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法入门-深度优先搜索3

第六部分&#xff1a;深度优先搜索 112.路径总和&#xff08;简单&#xff09; 题目&#xff1a;给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果…

【QT Creator】基本使用

一、常见问题 解答可见以下链接&#xff1a; https://www.cnblogs.com/xia-weiwen/p/10074882.html#title3.1 ** 有关控制台选择构建套件缺失的解决方法可见以下链接 https://blog.csdn.net/xuxu_123_/article/details/131257928 二、如何创建第一个QT项目 第一步&#xf…

一文解答Swin Transformer + 代码【详解】

文章目录 1、Swin Transformer的介绍1.1 Swin Transformer解决图像问题的挑战1.2 Swin Transformer解决图像问题的方法 2、Swin Transformer的具体过程2.1 Patch Partition 和 Linear Embedding2.2 W-MSA、SW-MSA2.3 Swin Transformer代码解析2.3.1 代码解释 2.4 W-MSA和SW-MSA…

Elasticsearch入门安装

1、下载安装 &#xff08;1&#xff09;安装Elasticsearch 下载地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 解压后运行 /bin/elasticsearch.bat 运行后访问 http://127.0.0.1:9200/即可 ps1&#xff1a;若无法访问且控制台打印 received plaintex…

计算机基础之-TCP 别再问我啦

TCP 协议 格式及部分含义根据端口号找到上一层的进程如何解包-整个包长度 ACK应答机制序号-确认序号-实现TCP的可靠传输和流量控制:为什么要有两个字段(序号和确认序号)&#xff1f; 16位窗口大小-缓冲区流量控制16位紧急指针三次握手四次挥手为啥 TIME_WAIT 滑动窗口 协议 格式…

代码随想录冲冲冲 Day40 动态规划Part8

121. 买卖股票的最佳时机 dp[i][0] 代表第i天持有股票手上的金额 dp[i][1] 代表第i天不持有股票手上的金额 初始化&#xff1a; dp[0][0] 持有所以是-prices[0] dp[0][1] 不持有所以是0&#xff1b; 递推公式: dp[i][0] 既然是i天时持有&#xff0c;那么就是之前就持有&…

开放式耳机具备什么特点?2024排行前十的四款百元蓝牙耳机推荐

开放式耳机具有以下特点&#xff1a; 佩戴舒适&#xff1a; 开放式耳机通常不需要插入耳道&#xff0c;能减少对耳道的压迫和摩擦&#xff0c;长时间佩戴也不易产生闷热、疼痛或瘙痒等不适&#xff0c;对于耳道敏感或不喜欢入耳式耳机压迫感的人来说是很好的选择。 这类耳机…

无线通信里的一些参数(dB dBm RSRP RSRQ RSSI SIN) / 天线增益

目录 历史由来dB和dBmRSRP RSRQ RSSI SNRRSSI在实际测试环境中的应用天线增益 详细阅读&#xff1a; 一文搞懂dB、dBm、dBw、dBi的来龙去脉 无线通信中 RSRP RSRQ RSSI SINR的定义和区别 RSRP RSRQ RSSI SNR的含义和区别 历史由来 dB展开应写为decibel&#xff0c;其中“deci…

【震撼】8岁女孩用Cursor编程,你还在等什么

1. Cursor: 革新性的AI代码编辑器 1.1 Cursor的崛起 近期&#xff0c;AI驱动的代码编辑器Cursor在开发者社区中引起了广泛关注。其火爆程度不仅源于AI大咖Andrej Karpathy在社交平台X上的推荐&#xff0c;更因一则令人惊叹的新闻&#xff1a;一位年仅8岁的小女孩利用Cursor和其…

金士顿NV2 2TB假固态硬盘抢救记,RL6577/RTS5765DL量产工具,RTS5765DL+B47R扩容开卡修复

之前因为很长时间不买固态硬盘&#xff0c;没注意到NVME的固态盘也有了假货和扩容盘&#xff0c;花200多块买了个2TB的金士顿NV2固态硬盘&#xff0c;我原本以为NV1的假货最多是用黑片冒充正片&#xff0c;结果没想到NV2居然有扩容的。后来发现是扩容盘的时候&#xff0c;已经过…

C++ 音频

一、采样频率 当前主流的采样频率为22.05KHz、44.1KHz、48KHz 22.05KHz&#xff1a;为FM广播声音品质 44.1KHz&#xff1a;为理论上最高的CD声音品质&#xff08;直播&#xff0c;录像&#xff0c;acc&#xff09; 48KHz&#xff1a;人耳可分辨的最高采样频率 &#xff08;…

使用PXE实现自动化安装rockylinux8.10

PXE 一、简介 实现多台服务器自动化安装系统。 二、部署 这里宿主机是 centos7&#xff0c;PXE 部署的是 rockylinux8.10。宿主机需提前关闭 selinux 和防火墙。 2.1 部署 dhcp 安装 dhcp [roottest-server ~]# yum install -y dhcp修改配置文件 # 复制默认的配置文件 …

极光出席深圳国际人工智能展并荣获“最具投资价值人工智能奖”

9月8-10日&#xff0c;由深圳市工业和信息化局、深圳市发展和改革委员会、深圳市科技创新局、深圳市政务服务和数据管理局、深圳市中小企业服务局共同指导&#xff0c;深圳市人工智能行业协会主办的第五届深圳国际人工智能展正式开幕。作为中国领先的客户互动和营销科技服务商&…

基于人工智能的智能农业监控系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 智能农业是利用现代信息技术和人工智能进行农业生产的优化管理&#xff0c;通过实时监控和预测系统&#xff0c;可以改善作物的生产效…

工控安全需求分析与安全保护工程

工控系统安全威胁与需求分析 工控系统&#xff08;ICS&#xff09;&#xff0c;是由各种控制组件、监测组件、数据处理与展示组件共同构成的对工业生产过程进行控制和监控的业务流程管控系统 分类&#xff1a;离散制造类和过程控制类 工控系统安全保护机制与技术 工控系统安全…

无人机加速度计的详解!!!

一、加速度计的基本定义 加速度计是一种用于测量物体加速度的传感器。它能够感知物体在各个方向上的加速度变化&#xff0c;并将这些变化转换为电信号进行输出。 二、加速度计的工作原理 加速度计的工作原理基于牛顿第二定律&#xff0c;即力等于质量乘以加速度&#xff08;…

Pygame中Sprite类实现多帧动画3-2

3.2.3 设置帧的宽度、高度、范围及列数 通过如图6所示的代码设置帧的宽度、高度、范围及列数。 图6 设置帧的宽度、高度、范围及列数的代码 其中&#xff0c;frame_width、frame_height、rect和columns都是MySprite类的属性&#xff0c;在其__init__()方法中定义&#xff0c;…

计算机毕业设计选题推荐-产品委托配送系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

【项目综合】基于 Boost 库的站内搜索引擎(保姆式讲解,小白包看包会!)

目录 一、项目背景 1&#xff09;搜索引擎是什么 2&#xff09;Boost 库是什么 3&#xff09;搜索的结果是什么 二、项目原理 1&#xff09;宏观原理和整体流程 2&#xff09;正序索引与倒序索引 3&#xff09;所用技术栈和项目环境 4&#xff09;项目源码地址&#x…

[【人工智能学习笔记】4_3 深度学习基础之卷积神经网络

卷积神经网络概述 卷积神经网络(Convolutional Neural Network, CNN)一种带有卷积结构的深度神经网络,通过特征提取和分类识别完成对输入数据的判别;在1989年提出,早期被成功用于手写字符图像识别;2012年更深层次的AlexNet网络取得成功,伺候卷积神经网络被广泛应用于各…