- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
假设我有一个已二值化的 numpy 数组图像:所有值都是 0 或 255。在 opencv 的 python 变体中,我可以这样做:
conn = cv2.connectedComponentsWithStats(mask, 8, cv2.CV_32S)
conn
对象会告诉我:
此外,可以保证标签 0 是“背景”标签,但根据 documentation没有说明该背景是如何确定的。
假设我的图像是白色背景上的黑点,实际上无法保证行为:可能是一个实际上溢出背景的黑点(留下“背景角”)或多个小块点,甚至是排列成这样的黑点一种在它们之间创建白色岛屿等的方式。
但我只对我的黑点感兴趣。
当我对 openCV 提供的背景组件的颜色没有信心时,是否有一种简单的 pythonic 方式来确定每个连接段的基础颜色?或者:我是否遗漏了有关 connectedComponent 功能或 OpenCV API 的一些明显信息?
(注意:我知道我可以暴力破解:遍历标签,在提供的标签数组中找到每个标签的第一个实例,然后探测图像数组中的相应索引。至少我认为我可以做到that-- 文档很少。但这让我觉得非常不雅。)
最佳答案
作为兴趣点,connected components in ImageMagick确实列出了区域的平均颜色,因为它允许模糊颜色区域确定(根据模糊值),此处未显示。
这是一个简单的二进制示例,所以平均颜色是实际颜色:
magick objects.gif -define connected-components:verbose=true -connected-components 4 -auto-level regions.png
Objects (id: bounding-box centroid area mean-color):
0: 256x171+0+0 119.2,80.8 33117 srgb(0,0,0)
2: 120x135+104+18 159.5,106.5 8690 srgb(255,255,255)
3: 50x36+129+44 154.2,63.4 1529 srgb(0,0,0)
4: 21x23+0+45 8.8,55.9 409 srgb(255,255,255)
1: 4x10+252+0 253.9,4.1 31 srgb(255,255,255)
列表按最高区域优先排序。所以“背景”将由最大的区域面积决定,并列在最前面。
结果由 id 编号编码为灰度级,它被拉伸(stretch)到全动态范围以供通过 -auto-level 查看。
还有一个定义参数,可以设置它来生成按区域过滤的输出,然后按平均颜色显示包含结果区域的图像。
magick objects.gif -define connected-components:area-threshold=410 -define connected-components:mean-color=true -connected-components 4 filtered.png
关于python - 在 Python OpenCV 中查找 connectedComponents 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57454209/
我使用 cv2.connectedComponentWithStats 将图像分成簇。现在我想观察每个集群的颜色变化。 目前我的代码是这样的: #...Calculation of the mask
我使用 OpenCV 中的 SuperpixelSLIC 计算超像素并获取每个超像素的标签,现在我需要计算每个标签的邻域。例如,考虑下面数组中的 8 连通情况,标签 1 的邻域是 {2, 5},标签
当调用 cv2.connectedComponents 时,打印其结果然后再次调用它,我在第二次调用时遇到段错误。我设法将其缩小到以下示例: #!/usr/bin/python import cv2
我想使用函数 cv2.connectedComponents 连接二进制图像上的组件,如下所示... . 一切正常,除了输出的标签数组。根据已识别的组件,此数组中只有零,而不是指示的序号。 impor
我在 Ubuntu、python 2.7 上。使用 OpenCV。 我试图准确理解函数 cv2.connectedComponents 在做什么。这是图像: 代码: import cv2 import
我一直在尝试测试 redux 的 ConnectedComponent。但我却无法与之相处。当我将 store 作为 store prop 传递给 ConnectedComponent 时,我收到此错
是否有访问由 cv::connectedComponents 标记的特定区域的好方法?例如,我已经在二值图像中识别出三个区域白色区域,它们被标记为 1、2、3。如何仅对标记为 2 的区域进行计算(例如
我想选择这张图片的每个组成部分: 在实践中,每个三角形都有其标签。我不知道怎么办。我有这段代码: #!/usr/bin/python import cv2 import numpy as np img
我想使用函数 cv2.connectedComponents 来连接二进制图像上的组件,如下所示... 我已将该功能添加到 cv2。 connectedComponents 以消除具有少量像素的元素。
如何使用Python OpenCV ConnectedComponents函数获取图像? 通过搜索过去的一些问题,我只能找到如何用不同颜色遮蔽连接的对象(我测试过并且有效,但我不知道标签是如何工作的)
我用 C++ OpenCV 的 connectedComponents 函数获得了一个标签,如图所示: 这是 ccLabels 变量的输出,它是一个与原始图像大小相同的 cv::Mat。 所以我需要做
我正在尝试优化我们的一些计算机视觉算法,并决定将 cv::connectedComponents 与 cv::findContours(和 cv::drawContours) 以获得类似的结果。 基本
假设我有一个已二值化的 numpy 数组图像:所有值都是 0 或 255。在 opencv 的 python 变体中,我可以这样做: conn = cv2.connectedComponentsWit
我正在使用以下 OpenCV 教程尝试分水岭算法: https://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_i
我是一名优秀的程序员,十分优秀!