我正在尝试创建一个车道检测系统,我需要找到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(绿线的基数)。
关于python - 有没有一种方法可以找到/检测两个像素的中间或opencv创建的两行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61894249/