首页 > 解决方案 > 如何找到图像中点之间的距离?

问题描述

我正在使用 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))

编辑:我用深度学习算法检测到了点,我想测量点和线之间的距离。我想测量的距离对于红点是负的,对于蓝点是正的,对于位于线上的点是零。这是照片

在此处输入图像描述

我有两个问题:我得到了一个点的唯一测量值。如何测量到所有点的距离?以及我如何定义负距离?

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

任何提示表示赞赏,谢谢!

标签: imageimage-processing

解决方案


您可以使用“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”线上,符号值将为零。


推荐阅读