我正在使用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:谢谢。我想出了如何测量距离的方法,但是我仍在努力定义带有负号和正号的点的位置。
感谢任何提示,谢谢!
答案 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”行上,则符号值将为零。