首页 文章

显示分水岭算法的分段

提问于
浏览
0

我是Opencv的新手,我最近一直在使用分水岭算法,目前我尝试使用不同的颜色标记来分割图像,但我也希望显示这些分段 .

有没有任何方法可以做到这一点,因为我们可以使用简单线性迭代聚类功能和标记边界函数在简单线性迭代聚类超像素分割中做到这一点

使用Opencv和python .

谢谢 .

1 回答

  • 1

    首先按照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()
    

相关问题