返回顶部
首页 > 资讯 > 后端开发 > Python >Python实现标记数组的连通域
  • 449
分享到

Python实现标记数组的连通域

Python标记数组连通域Python 数组连通域Python 连通域 2023-05-16 20:05:57 449人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录连通域标记structure参数操作连通域定位连通域连通域标记 通过label函数,可以对数组中的连通区域进行标注,效果如下 from scipy.ndimage import

连通域标记

通过label函数,可以对数组中的连通区域进行标注,效果如下

from scipy.ndimage import label
import numpy as np
a = np.array([[0,0,1,1,0,0],
              [0,0,0,1,0,0],
              [1,1,0,0,1,0],
              [0,0,0,1,0,0]])
labels, N = label(a)
print(labels)
'''
[[0 0 1 1 0 0]
 [0 0 0 1 0 0]
 [2 2 0 0 3 0]
 [0 0 0 4 0 0]]
'''
print(N)    4

其中,a是一个二值矩阵,经过label标记后,其相连通的部分分别被标上了序号。可以更直观地用图像显示一下

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(121)
plt.imshow(a)
ax = fig.add_subplot(122)
plt.imshow(labels)
plt.show()

structure参数

在label函数中,还有一个用于规范何为“连通”的参数,即structure,其数据类型为二值数组,其维度与输入的input相同。

在上面的示例中,连通域1,3,4尽管没有上下左右的联系,但在对角线上是有交集的,通过调整structure参数,可以提供一种将这三个区域连在一起的连通域方案。

stru = np.ones([3,3])
bLab, bN = label(a, stru)
print(bLab)
‘'‘
[[0 0 1 1 0 0]
 [0 0 0 1 0 0]
 [2 2 0 0 1 0]
 [0 0 0 1 0 0]]
'‘'

可见,这次只选出了两组连通域。

操作连通域

scipy.ndimage提供了labeled_comprehension函数,其功能大致相当于[func(input[labels == i]) for i in index],即从已经做好连。通域标记的数组中,取出序号为index所在区域的值,参数如下

labeled_comprehension(input, labels, index, func, out_dtype, default, pass_positions=False)

其中input为输入数组;labels是已经做好的连通域标记;index为将要挑选进行操作的连通域序号;func为具体的操作函数;out_dtype为输出数据类型;default表示,当index不存在于连通域标记中时的输出值,下面做一个示例

from scipy.ndimage import labeled_comprehension
labeled_comprehension(a, labels, [1,2,3,4], sum, int, 0)
# array([3, 2, 1, 1])

连通域序号为1,2,3,4的区域,分别有3,2,1,1个元素,而且所有元素都是1,所以求和之后的值为[3, 2, 1, 1]。

定位连通域

scipy.ndimage中的find_objects函数可以返回连通域的切片范围。

from scipy.ndimage import find_objects
axis = find_objects(labels)
for x,y in axis:
    print(x, y)

'''
slice(0, 2, None) slice(2, 4, None)
slice(2, 3, None) slice(0, 2, None)
slice(2, 3, None) slice(4, 5, None)
slice(3, 4, None) slice(3, 4, None)
''''

如果根据这个对原数组进行切片,就可以得到其对应的标记区域

for x,y in axis:
    print(labels[x,y])
    print("--------")
'''
[[1 1]
 [0 1]]
--------
[[2 2]]
--------
[[3]]
--------
[[4]]
--------
'''

到此这篇关于python实现标记数组的连通域的文章就介绍到这了,更多相关Python标记数组连通域内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python实现标记数组的连通域

本文链接: https://lsjlt.com/news/210522.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python实现标记数组的连通域
    目录连通域标记structure参数操作连通域定位连通域连通域标记 通过label函数,可以对数组中的连通区域进行标注,效果如下 from scipy.ndimage import ...
    99+
    2023-05-16
    Python标记数组连通域 Python 数组连通域 Python 连通域
  • OpenCV学习记录python实现连通域处理函数
    目录1、两个函数介绍1.1什么是连通域1.2 cv2.connectedComponents()1.3 cv2.connectedComponentsWithStats()2、代码实...
    99+
    2024-04-02
  • python如何实现连通域处理函数
    今天小编给大家分享一下python如何实现连通域处理函数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、两个函数介绍总得来...
    99+
    2023-07-02
  • OpenCV实现图像连通域
    图像的连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的连通域并将其标记出来。 一般情况下,一个连通域内只包含一个像素值,因此为了...
    99+
    2024-04-02
  • Python实现统计图像连通域的示例详解
    目录数组统计函数连通域标记连通域统计数组统计函数 ndimage提供一系列函数,可以计算标注后的数组的相关特征,比如最值、均值、均方根等。 下列函数,如果未作其他说明,那么就有3个参...
    99+
    2023-05-17
    Python统计图像连通域 Python 图像连通域 Python 连通域
  • Python实现局域网(Socket)通
    这学期课很多,加上学校就业办这边事情也不少,所以零散时间琢磨了很多天,开始想用进程的并发实现一个收,一个发,但ide无法实现同时print和input,所以暂时只实现了一个类似对讲机一样的程序,就是A说B听,然后B说A听,如此循环。 先看程...
    99+
    2023-01-31
    局域网 Python Socket
  • python标记删除的实现方法
    这篇文章主要介绍了python标记删除的实现方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研...
    99+
    2023-06-14
  • python标记删除怎么实现
    这篇文章主要讲解了“python标记删除怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python标记删除怎么实现”吧!说明主要解决循环引用的数据。因为引用大于0,不会回收。标记删除...
    99+
    2023-06-30
  • OpenCV清除小面积连通域的实现方法
    场景需求        使用OpenCV,往往遇到这类场景:需要清除目标图像中比较小的噪声区,保留主要区域信息。     ...
    99+
    2024-04-02
  • OpenCV连通域数量统计实例分析
    本文小编为大家详细介绍“OpenCV连通域数量统计实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenCV连通域数量统计实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。核心代码int ...
    99+
    2023-07-02
  • Python实现日历壁纸动态标记
    迁自QQ空间 2014-08-08背景可能这个标题不够明确到底要实现什么功能,下面详细介绍一下。由于windows系统任务栏的日期只有年、月、日,对于我来说,偶尔想看看农历,所以每次都要去问度娘。后来发现一个不错的办法,就是找一个带日历(包...
    99+
    2023-01-31
    标记 日历 壁纸
  • python 实现端口连通性检测
    # -*- coding: utf-8 -*- #!/bin/env python #AUTHOR:karl #DATE:2018-1-19 #VERSION:V1.0 ###################### import time ...
    99+
    2023-01-31
    端口 连通性 python
  • JavaScript+JSONP:实现跨域数据通信的妙招
    跨域数据通信是一个常见的问题,尤其是在现代Web应用中,数据通常需要在不同的域之间进行交换。然而,由于浏览器同源策略的限制,跨域数据通信受到了一定的限制。即JavaScript脚本只能访问与加载脚本的页面来自同一个域的资源,这使得跨域数...
    99+
    2024-02-24
    JSONP 跨域 数据通信
  • python opencv实现目标区域裁剪功能
    这个任务是自己在项目中数据处理的一部分内容,待处理的图片如下所示: 我需要将目标区域给裁剪出来,要不然在后期训练网络的时候整幅图像过大,且目标区域过小,得到结果不好,还会加剧计算量。在网上找了各个大佬的博客看,没找...
    99+
    2022-06-02
    python opencv区域裁剪 python opencv裁剪
  • Java 通过AQS实现数据组织
    引言 从本篇文章开始,我们将介绍 Java AQS 的实现方式,本文先介绍 AQS 的内部数据是如何组织的,后面的文章中再分别介绍 AQS 的各个部门实现。 AQS 通过前面的介绍,...
    99+
    2024-04-02
  • 详解OpenCV执行连通分量标记的方法和分析
    目录1.OpenCV 连通分量标记和分析1.1 OpenCV 连通分量标记和分析函数1.2 项目结构2.案例实现2.1 使用 OpenCV 实现基本的连通分量标记2.2 完整代码2....
    99+
    2024-04-02
  • Python实现基于标记的分水岭分割算法
    目录1. 原理2.代码实现2.1 利用OpenCV和c++实现分水岭算法2.2 Python实现分水岭分割(1)2.3 Python实现分水岭分割(2)分水岭技术是一种众所周知的分割...
    99+
    2024-04-02
  • 运用Python3实现Two-Pass算法检测区域连通性
    目录技术背景Two-Pass算法测试数据的生成Two-Pass算法的实现算法的执行流程标签的重映射其他的测试用例总结概要参考链接技术背景 连通性检测是图论中常常遇到的一个问题,我们可...
    99+
    2024-04-02
  • Python实现对比两个Excel数据内容并标记出不同
    日常工作中需要对比两个Excel工作表中的数据差异是很不方便的,使用python来做就比较简单了! 我们的思路是通过读取两个Excel的数据,采用逐个遍历对比同一个位置的两个单元格如...
    99+
    2022-12-26
    Python对比Excel数据 Python对比数据 Python对比Excel
  • python opencv怎么实现目标区域裁剪功能
    这篇文章主要讲解了“python opencv怎么实现目标区域裁剪功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python opencv怎么实现目标区域裁剪功能”吧!这个任务是自己在项...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作