【问题标题】:How do I find the distance between points in image?如何找到图像中点之间的距离?
【发布时间】:2019-07-25 00:45:28
【问题描述】:

我正在使用 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:谢谢。我想出了如何测量距离,但我仍在努力用负号和正号定义点的位置。

感谢任何提示!

【问题讨论】:

  • 这看起来是正确的。你能举个例子吗?
  • 伊夫,我编辑了我的问题,请查看它。
  • 距离总是正数!

标签: image image-processing


【解决方案1】:

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

【讨论】:

  • 写完这个答案后,我看到了你修改的突出显示的问题。多个点的计算可以通过将坐标放入Pn中的for循环来完成。
  • Algopark,我有一个错误,我修复了它们。在职的。我有个问题;如何对这些点进行排序以按顺序进行测量,例如从图像的左侧到右侧。因为我编写程序的方式只是输出所有测量值,我不知道哪个是针对哪个点的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多