【发布时间】:2021-03-16 20:53:37
【问题描述】:
我正在尝试在一组与此类似的图像中找到绿色和蓝色之间的交集:
所以我需要的是这样的东西:
因为在那之后我需要使用轮廓进行一些微积分,所以我想知道是否可以将曲线的点放在数组或其他东西中......但我不知道这是否可能。我试着做面具,但我不认为它会起作用......这是代码:
lower_val = np.array([0, 0, 0])
upper_val = np.array([150, 255, 150])
mask = cv2.inRange(image, lower_val, upper_val)
only_lumen = cv2.bitwise_and(image, image, mask=mask)
gray = cv2.cvtColor(only_lumen, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (3, 3), 0)
thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
thresh = 255 - thresh
这就是我试图显示点的方式:
x, y = [i[0] for i in pts_list], [i[1] for i in pts_list]
max_x, max_y = max(x), max(y)
image = np.zeros((max_y + 1, max_x + 1))
for i in range(len(pts_list)):
image[max_y - y[i], x[i]] = 1
我不明白为什么这些点会在一个角落里相遇,为什么背景是紫色的......应该在中间的线条
【问题讨论】:
-
这些是我认为您需要更好地指定以使您的问题更具体的事情:1)我们可以假设背景总是黑色的吗? 2)您是否只希望两种前景色(这里是蓝色和绿色)之间的交点而不是背景色? 3) 前景色是否只有 2 种? 4)只是你提到的那些还是会有所不同? 5)这里有两组交叉点,如果有很多这样的交叉点,您希望它们作为单独分组的点列表还是作为单个点列表?
-
通过编辑帖子提供的信息越多,答案就越好。但是,是的,使用给定的信息,可以提取点集。我会根据我自己的假设(根据您提供的当前信息)写出答案。
-
嗨!非常感谢您或您的回答:)我将再次回答您的观点,非常感谢! 1)是的,它总是会是黑色的。 2)我的想法只是在前景色之间(在这种情况下是蓝色和绿色)。 3)是的,它们只有两个 4)它们可以变化,所以我的想法是将它们作为参数。 5)我以前没有考虑过,但也许在两个列表中更好?之后我想做的是计算方向向量以查看表面是否规则。所以我的想法是将每个向量与前一个向量进行比较,看看它的方向是否相似(常规)
-
或非常不同(将是不规则的)。谢谢!!!
-
感谢您提供更多信息。如果您可以通过编辑将这些信息添加到您的问题中,那就太好了,以便查看该帖子的其他人可以更好地帮助您。在我编写代码和测试结果时给我一些时间。