image - 如何找到图像中点之间的距离?
问题描述
我正在使用 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:谢谢。我想出了如何测量距离,但我仍在努力用负号和正号定义点的位置。
任何提示表示赞赏,谢谢!
解决方案
您可以使用“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”线上,符号值将为零。
推荐阅读
- pyspark - 如何在pyspark中连接不同的地图类型
- python - 无法使用 Selenium 登录 Target.com
- flutter - Flutter - 有没有办法在 SearchDelegate 中查询 Firebase?
- javascript - 无法在 Vue 组件中使用 prop 对象
- java - 在 JavaFx 中更改圆圈颜色的正确方法是什么?
- pandas - 有什么方法可以在顺序日历中填写销售记录的缺失行
- windows - 如何区分 Windows HID API 中的设备?
- r - 在调用环境中评估函数
- java - Java 代码在从变量引用时有效,但在直接调用时抛出错误
- firebase - Firebase 云调度程序功能成本