【发布时间】:2021-11-05 09:03:08
【问题描述】:
我正在尝试确定两条线的位置,到目前为止,我使用的是 numpy,但我愿意在必要时使用 opencv。
我使用的是 X 坐标的方法。所以在第一张图片中,你可以看到中心的斑点是每条线的 X 坐标平均值的位置。您可以清楚地看到红线在绿线的“左侧”(因为 mean_read
问题是当某些线条像右图那样很小时。 您可以直观地知道,红线仍然在绿线的“左侧”。但是,如果我们看到均值,这一次 mean_red > mean_green。
有没有更好的方法使用numpy甚至使用opencv来正确判断绿线在红线的右边?
【问题讨论】:
-
您可以使用
inRange和OpenCV来分离HSV 空间中的颜色,在RGB 空间中使用Numpy的另一种解决方案是分离颜色通道和从绿色通道的平均值中分别找到红色通道的平均值 -
您对“线段 A 在线段 B 的左侧”的(数学)定义是什么?如果绿色部分是水平的,它将如何工作?如果分段交叉怎么办?如果在第二张图片中,红色部分更进一步呢?
-
见gamedev.net/forums/topic/… 但是你真的需要测试红线的两个端点,因为它可能会倾斜并越过绿线。
-
@Bilal 对不起,如果我不够清楚。线条和它们的坐标已经被清楚地识别出来了,所以这不是找到红色或绿色的问题。那已经完成了。问题是手段并不总是一个好的判断
-
@KansaiRobot 如果你有坐标,那么 OpenCV 和图像处理标签需要什么?从现在开始,这似乎是一件简单的事情。也许您只需要比较两条线的两端(而不是它们的中心点)。为了更加放心,最好根据您最近的评论在 math.stackexchange.com 上提出这个问题。
标签: python numpy opencv image-processing