【问题标题】:How to access individual labels in OpenCV connected component labelling如何访问 OpenCV 连接组件标签中的单个标签
【发布时间】:2019-12-20 19:20:38
【问题描述】:

我正在尝试在 Python 中使用 OpenCV 的 connectedComponentsWithStats 访问对象的各个标签。但是,当我运行 connectedComponentsWithStats 函数时,会返回一个带标签的数组,其中每个对象都具有不同的像素值。如何有效地将每个标记对象作为单独的数组访问?我在这里使用非常大的图像,尺寸约为 12000 x 10000 像素。

我这里有一张标有 cv.connectedComponentsWithStats 的图片:

使用的颜色图以紫色 (1) 开头,以黄色(最后一个标签)结尾。如何将每个标记的对象作为单独的数组独立引用?

【问题讨论】:

  • 请展示您的代码,或许还有一个小示例图片。
  • 如果要对每个对象的所有像素进行分类,请对所有图像像素(行*列)进行循环,并将所有颜色相同的像素推入一个公共数组中。如果您得到任何新颜色,请创建一个新数组,依此类推。最后你有一个数组数组,每个数组代表一个对象。

标签: python numpy opencv image-segmentation connected-components


【解决方案1】:
source = <some_image>
labels = <connected components result>

for label in np.unique(labels):
    m = (labels == label)  # boolean array/mask of pixels with this label
    obj = source[m]  # orignal pixel values for the labeled object

这将返回一个平坦的结果,从您的问题中不清楚这是否可以接受

【讨论】:

    猜你喜欢
    • 2014-04-13
    • 2013-12-02
    • 2017-05-07
    • 2018-03-08
    • 2011-01-10
    • 2014-05-19
    • 2011-07-31
    • 1970-01-01
    相关资源
    最近更新 更多