我使用以下代码标记二进制映像中的连接组件:
def connected_component(img):
output = cv2.connectedComponentsWithStats(img, 8)
num_labels = output[0]
labels = output[1]
return labels, num_labels
我在主要内容如下:
labels, num_labels = connected_component(seg_f)
我希望找到每个连接组件的端点(假设连接的组件是线)。 我试图按照以下方式进行,但输出错误:
cropped_max_y_1=[]
cropped_min_y_1=[]
cropped_max_x_1=[]
cropped_min_x_1=[]
seg_f, _ = ndimage.label(seg_f)
num_instances = np.max(np.max(seg_f))
for instance_id in range(1,num_instances+1):
im_inst = seg_f == instance_id
points = np.nonzero(im_inst)
cropped_min_x_1.append(np.min(points[0]))
cropped_min_y_1.append(np.min(points[1]))
cropped_max_x_1.append(np.max(points[0])+1)
cropped_max_y_1.append(np.max(points[1])+1)
请建议改变或采用其他方法来做同样的事情。
以下是输入示例: enter image description here
预期的输出将是,例如,关节的坐标
答案 0 :(得分:1)
端点是唯一拥有单个邻居的端点。您可以轻松检查每像素的配置像素。
如果您还需要检测“准相邻”分叉,则可以在端点周围搜索其他像素,但忽略相同连接分量的像素。