如何找到图像中点之间的距离?

时间:2019-07-24 10:49:00

标签: image image-processing

我正在使用OpenCV + Python + Numpy,并且在图像中有多个2D点。

(P1, P2, P3,..., Pn);
 (N1, N2);

我试图获取与P1,P2,P3,...,Pn中的每一个垂直于N1和N2之间的直线的距离。让

P=(Xn, Yn)  where n varies between 1 to n.

在矢量表示法中,这将非常容易,并且我了解计算距离的数学原理。但是当涉及到图像时,我什么也做不了。 我阅读图像并定义要点

abs((x2-x1)*(y1-y0) - (x1-x0)*(y2-y1)) / np.sqrt(np.square(x2-x1) + np.square(y2-y1))

编辑:我已经使用深度学习算法检测到这些点,并且我想测量这些点与直线之间的距离。我想将距离测量为红色点为负,蓝色点为正,在线上的点为零。 这是照片

enter image description here

我有两个问题: 我得到的只有一点的测量结果。如何测量所有点之间的距离?以及我如何定义负距离?

编辑2:谢谢。我想出了如何测量距离的方法,但是我仍在努力定义带有负号和正号的点的位置。

感谢任何提示,谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用“ Numpy”和“ linalg.norm”,“ numpy.cross”来计算距离。

distance = linalg.norm(np.cross(N2-N1,N1-Pn))/linalg.norm(N2-N1)

并且您可以使用交叉函数返回值的符号来知道点的位置(您提到过“正”和“负”)。

sign = np.cross(N2-N1,N1-Pn)

如果Pn正好在“ N1-N2”行上,则符号值将为零。