【发布时间】:2019-08-14 22:24:59
【问题描述】:
假设我有一个已二值化的 numpy 数组图像:所有值都是 0 或 255。在 opencv 的 python 变体中,我可以这样做:
conn = cv2.connectedComponentsWithStats(mask, 8, cv2.CV_32S)
conn 对象会告诉我:
- 有多少连通分量(标签)
- 原图中每个像素的标签
- 每个连接组件的边界框和区域
- 每个连接组件的质心位置
此外,可以保证标签 0 是“背景”标签,但根据 documentation,没有说明如何确定该背景。
假设我的图像是白色背景上的黑点,实际上无法保证行为:可能是一个实际上溢出背景的黑点(留下“背景角”)或多个小块点,甚至是排列成这样的黑点一种在它们之间创建白色岛屿的方式,等等。
但我只对我的黑点感兴趣。
当我不相信 openCV 提供的背景组件的颜色时,是否有一种简单的 Pythonic 方式来确定每个连接段的基础颜色?或者:我是否遗漏了有关 connectedComponent 功能或 OpenCV API 的一些明显内容?
(注意:我知道我可以强制执行此操作:循环遍历标签,在提供的标签数组中找到每个标签的第一个实例,然后探测图像数组中的相应索引。至少我认为我可以做到那——文档很少。但这让我觉得非常不雅。)
【问题讨论】: