如何获得带孔的二元掩模的边界坐标?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得带孔的二元掩模的边界坐标?相关的知识,希望对你有一定的参考价值。
我有以下图像:
“>
我想获取一个列表,其中每个斑点的外轮廓和内部轮廓的坐标为(x, y)
(我们将其称为斑点A和B)。
import cv2 from skimage import measure blob = cv2.imread('blob.png', 0) contours, hier = cv2.findContours(blob, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) labels = measure.label(blob) props = measure.regionprops(labels) for ii in range(0,len(props)) xy = props[ii].coords plt.figure(figsize=(18, 16)) plt.imshow(blob, cmap='gray') plt.plot(xy[:, 0], xy[:,1]) plt.show()
从
(x, y)
坐标列表A和B中绘制蓝色和红色的所需输出图像:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9pbVYzVC5wbmcifQ==” alt =“所需的输出”>
我有以下图像:我想获取一个列表,其中包含每个斑点的外轮廓和内轮廓的(x,y)坐标(我们将其称为斑点A和B)。从skimage导入度量导入cv2 ...
答案
您直接从(x, y)
获得cv2.findContours
坐标。要识别单个斑点,请查看层次结构cv2.findContours
。第四个索引告诉您,可能的内部(或子级)轮廓与哪个外部(或父级)轮廓相关。大多数外部轮廓的索引为hier
,其他所有轮廓的索引均为非负值。因此,对于绘制/绘图,天真的方法是在迭代轮廓时,每次看到-1
时都会增加blob计数器,并以相同的颜色绘制所有轮廓,直到显示下一个-1
。
以上是关于如何获得带孔的二元掩模的边界坐标?的主要内容,如果未能解决你的问题,请参考以下文章