我是 Opencv 的新手, 我最近一直在使用分水岭算法, 目前我尝试使用不同的颜色标记来分割图像,但我也想显示这些片段。
有没有什么方法可以做到这一点,就像我们在使用简单线性迭代聚类函数和标记边界函数的简单线性迭代聚类超像素分割中所做的那样
使用 Opencv 和 python。
谢谢。
最佳答案
先关注THIS DOCUMENTATION获取图像中的标记。我使用了本文档中存在的相同图像。
之后逐行执行此代码并可视化每个变量包含的内容:
每个唯一的连接组件在变量 markers
中被分配一个唯一的值。我正在将 markers
中存在的那些值规范化为整数。每个连接的组件都可以在列表 uniq_thresh
中提到的特定阈值处获得。
label_hue = np.uint8(179*markers/1)
uniq_thresh = np.unique(label_hue).tolist()
cv2.imshow('label_hue', label_hue)
uniq_thresh.sort(reverse=True)
prev
是一张与原始图像形状相同但像素值为 0 的图像。
prev = np.zeros_like(label_hue)
现在,对于列表 uniq_thresh
中的每个唯一阈值,我正在显示连接的组件。但是由于 thresh
返回的图像的组件超过某个阈值,我从中减去先前的阈值图像以获得单个组件。
for th in uniq_thresh:
print(th)
ret, thresh = cv2.threshold(label_hue, th, 255, cv2.THRESH_BINARY)
cv2.imshow('ind', thresh)
cv2.imshow('ind2', thresh - prev)
prev = thresh
cv2.waitKey(0)
cv2.destroyAllWindows()
关于python - 显示分水岭算法的分割,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50363071/