使用OpenCV查找图像中两点之间的角度

时间:2014-04-18 07:09:05

标签: c++ opencv

我试图找到图像中两点之间的角度。角度参考相机的中心线。

enter image description here

在此图像中,中心点位于图像的中心(假设,我仍然需要弄清楚如何实际计算它),我想找到连接点1和摄像机中心之间的角度和连接所需点和摄像机中心的线

现在我想知道关于找到角度的两件事   - 如果距离未确切知道(但可以由人在运行时估计),是否可以知道角度假设两个点位于图像的同一平面内   - 如果这些点不在同一平面上,我应该如何处理角度计算?

2 个答案:

答案 0 :(得分:0)

可以通过inner product来实现。

inner product

如果您在3D空间中进行交谈,那么x(向量)和y(向量)的格式应为[a,b,f](a和b为点),其中f为图像平面距摄像机中心的距离,aa是摄像机框架中的相应坐标。

如果它位于2D空间中,那么您必须指定框架的来源,并根据该框架以及ab找到xy向量的格式为[a,b]

答案 1 :(得分:0)

可以使用这个公式找到: Angle between two rays

K 是相机矩阵。 x1 和 x2 是以类似 [u,v,1] 的同构形式给出的图像点,d1 和 d2 是相应的 3D 点。

参见 Richard Hartley,澳大利亚国立大学,堪培拉,Andrew Zisserman,牛津大学:“计算机视觉中的多视图几何”,第 2 版,p。 209 了解更多详情。

反转相机矩阵非常简单。看 https://www.imatest.com/support/docs/pre-5-2/geometric-calibration-deprecated/projective-camera/ 了解更多详情。