有没有办法 find/detect 两个像素的中间,或者由 opencv 创建的两条线?

Is there a way to find/detect the middle of two pixels, or two lines created by opencv?

我正在尝试创建一个车道检测系统,我需要找到 opencv 绘制的两条线的中间,如下所示: Two Lines created by fillPoly() function

我需要找到这两条线的中间(或线中两个像素之一)以在它们的中间创建一个点或另一条线,以便我可以检测到汽车变道。 谢谢。

考虑到您有两条平行线 L1 (x1, y1) - (x2, y2) 和 L2 (x3, y3) - (x4, y4),中间线是这两个值的简单平均值,例如Zabir 在评论里对你说了。

但要注意画线的方法,如下文档所示:

# Create a black image
img = np.zeros((512,512,3), np.uint8)
# Draw a diagonal blue line with thickness of 5 px
cv.line(img,(0,0),(511,511),(255,0,0),5)

这里的线是从点 (0, 0) 到 (511, 511),它以元组格式传递,因此您收到错误消息

SystemError: new style getargs format but argument is not a tuple

因此,为了解决这个问题,您只需要以正确的方式提供,例如:

cv.line(img,(x1_middle, y1_middle),(x2_middle,y2_middle),(255,0,0),5)

Take a look here for drawing functions

  • 根据评论编辑

因为我认为这是两条平行线而不是交叉点,所以问题又来了,这只是数学演算。如果你有两条线 L1: y = 2x 和 L2: y = 20 - 2x 这两条线之间的交点是点都具有相同的 x 和 y,所以为了找到简单系统的解决方案:

2x - y = 0

2x + y = 20

这导致 x = 5,y = 10(绿线的基数)。