【发布时间】:2022-01-15 20:10:15
【问题描述】:
我正在努力检测一个移动的物体,当它在交通中进行非法移动时(例如:下线)。但是由于 Opencv 的反向坐标系,当我用正确的公式计算它时,它并没有给我正确的答案。我的画线功能:
cv2.line(firstFrame, (250, 0), (130, 480), (0,255,0), 1) # left line
cv2.line(firstFrame, (320, 0), (320, 480), (0,255,0), 1) # center line
cv2.line(firstFrame, (390, 0), (510, 480), (0,255,0), 1) # right line
还有我的直线方程:
y +4x -1000 = 0 for the left line
y -4x +1560 = 0 for the right line
当我的对象向左移动时,它开始弄乱距离。当我看到计算出的距离和对象的质心坐标时,我发现了一些奇怪的东西:
虚线之间的区域有距离(UZAKLIK)和坐标(KONUM)值。它说当我的对象在 (105,225) 时,它到左边线的距离是 1.212 所以我在那个坐标上画了一个圆圈,可以看到它不可能接近值 1。它应该至少是 60 像素。我的左边线的距离计算器方法 - 其中 a 和 b 是点的 x,y 值 - :
def distanceFromLeft(a, b):
nom = abs(a*1+b*4 -1000)
denom = math.sqrt(17)
return nom/denom
编辑:感谢所有答案。我发现问题出在哪里:我的距离计算器中的分子部分是错误的。 a 和 b 应该切换,因为 a 是该点的 x 值,并且必须乘以直线方程中 x 的系数
【问题讨论】:
-
-1000 是右行的 c,而不是左行的 c。你应该把你的变量名弄对。为什么点作为 a, b 而不是 x, y 传递?为什么分子叫x,分母叫y?看代码真的很费解。
-
@Thomas cv2 为点绘制左线: (250, 0), (130, 480) 。当我将这些值放入线方程计算器时,它会给出 y+4x-1000=0 。抱歉编码不好,我没有太多时间到最后期限
-
坐标系。 Y 增长向下。左边的线有负斜率和正 y 轴截距。
-
@Christoph thx 回答,我应该怎么做才能获得正确的方程式?这让我感到很困惑,哈哈
-
你有没有可能得到你的equations from brilliant.org?
标签: python opencv math geometry