我如何以编程方式从 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)
我正在努力将一张简单的图片分成一组新的图片,其中每张图片只包含原始图片中的一种颜色。为了弄清楚要分离出哪些 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)