gpt4 book ai didi

c++ - 如何通过opencv获取连通分量中的所有像素?

转载 作者:太空宇宙 更新时间:2023-11-03 22:10:50 24 4
gpt4 key购买 nike

我使用新的 函数 connectedComponentsWithStats (3.0 版)。如何获取连通分量中的所有像素?

结果
enter image description here

最佳答案

connectedComponentsWithStats 的第三个参数, stats,为您提供信息,使您可以在标记区域周围绘制边界框。

第二个参数,labels 应该包含一个图像,其中非标记像素为零(黑色像素),标记像素组为彩色像素,每个标签一种颜色。请记住,非零值将是唯一的,但非常小(例如,对于 7 个标签,从 0(背景)开始,标签值将增加到 6)。

这是一个 9x9 二进制图像示例:

[
[255,255, 0, 0, 0, 0, 0,255,255],
[255, 0, 0,255,255,255, 0, 0,255],
[ 0, 0,255, 0, 0, 0,255, 0, 0],
[ 0,255, 0, 0,255, 0, 0,255, 0],
[ 0,255, 0,255,255,255, 0,255, 0],
[ 0,255, 0, 0,255, 0, 0,255, 0],
[ 0, 0,255, 0, 0, 0,255, 0, 0],
[255, 0, 0,255,255,255, 0, 0,255],
[255,255, 0, 0, 0, 0, 0,255,255]
]

连通分量标签是:

[
[1 1 0 0 0 0 0 3 3]
[1 0 0 2 2 2 0 0 3]
[0 0 2 0 0 0 2 0 0]
[0 2 0 0 4 0 0 2 0]
[0 2 0 4 4 4 0 2 0]
[0 2 0 0 4 0 0 2 0]
[0 0 2 0 0 0 2 0 0]
[5 0 0 2 2 2 0 0 6]
[5 5 0 0 0 0 0 6 6]
]

要通过 imshow 将它们可视化,您可能需要按比例放大这些值。(可以是您选择的颜色或计算颜色的查找表,只要它们足够不同以在视觉上有意义)。

这是一个将上面的标签缩放 42(255 个最大值/6 个前景标签)的示例:

[
[ 42 42 0 0 0 0 0 126 126]
[ 42 0 0 84 84 84 0 0 126]
[ 0 0 84 0 0 0 84 0 0]
[ 0 84 0 0 168 0 0 84 0]
[ 0 84 0 168 168 168 0 84 0]
[ 0 84 0 0 168 0 0 84 0]
[ 0 0 84 0 0 0 84 0 0]
[210 0 0 84 84 84 0 0 252]
[210 210 0 0 0 0 0 252 252]
]

connected components labels visualised as grayscale islands in a sea of blackness (background)

关于c++ - 如何通过opencv获取连通分量中的所有像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37761246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com