我如何以编程方式从 kmeans 数据建立 cv2 掩码的上限和下限

how can i programatically establish upper and lower bounds for cv2 mask from kmeans data

我正在努力将一张简单的图片分成一组新的图片,其中每张图片只包含原始图片中的一种颜色。为了弄清楚要分离出哪些 rgb 颜色,我使用了 k 方法。簇的质心为 ne 提供了一组 rgb 颜色,转换为 cv2 bgr 颜色空间可以让我屏蔽掉这些颜色。但这需要颜色的上限和下限。关注。
我很困惑,因为我无法弄清楚如何从数据中确定上限和下限。 最后,我正在尝试像在 gimp 中一样“按颜色select”进行编程模仿,如果有更好的方法我想念请告知。

    upper_bound_list = []
    lower_bound_list = []
    dict = {i: data[np.where(values[1].flatten() == i)] for i in range
            (0, k)}

    for key, value in dict.items():
        n = (value[:, 0].max(), value[:, 1].max(), value[:, 2].max())
        upper_bound_list.append(n)
        n = (value[:, 0].min(), value[:, 1].min(), value[:, 2].min())
        lower_bound_list.append(n)

    for i in range(0, len(upper_bound_list)):

        lower = np.array(lower_bound_list[i], dtype="uint8")
        upper = np.array(upper_bound_list[i], dtype="uint8")
        mask = cv.inRange(img, lower, upper)
        output = cv.bitwise_and(img, img, mask=mask)