如何找到2个对象之间的水平和垂直距离变化

时间:2018-09-22 06:25:13

标签: c# math image-processing computer-vision emgucv

我正在尝试通过查找EMGU CV中两个质心之间的距离来找到它们之间的水平和垂直变化。底部对象始终是固定的,顶部对象在生产过程中会移动。我正在使用此公式-((x1-x2)*(x1-x2)+(y1- y2)*(y1- y2));

但是,这给出了在任何方向上的单个变化值。我正在尝试参考固定的底部对象找到顶部对象水平(左/右)和垂直(顶部/下)的运动变化。我该怎么做呢?请帮忙。

2 个答案:

答案 0 :(得分:0)

您正在尝试通过找到两个质心之间的距离来查找两个对象之间的水平和垂直变化。

Horizontal / x-direction:
d_x = |x_1 - x_2|

Vertical / y-direction:
d_y = |y_1 - y_2|

您正在使用以下公式:

((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));

这种方式称为euclidean distance

对于运动变化,您可能需要在两个连续的时间步中执行此操作,以计算距离差:

v_x(t=1) = d_x(t=1) - d_x(t=0)

答案 1 :(得分:0)

我通过以下方法找到了解决此问题的方法: 我使用固定对象的质心作为圆心,这样计算出顶部对象的位移:Math.Atan2(nydiff,nxdiff)* 180.0 / Math.PI