使用 OpenCV 查找图像中两点之间的角度
Posted
技术标签:
【中文标题】使用 OpenCV 查找图像中两点之间的角度【英文标题】:Finding angle between two points in an image using OpenCV 【发布时间】:2014-04-18 07:09:04 【问题描述】:我正在尝试找出图像中两点之间的角度。该角度以相机的中心线为基准。
在此图像中,中心点位于图像的中心(假设,我仍然需要弄清楚如何实际计算它)并且我想找到连接点 1 和相机中心的线之间的角度以及连接所需点和相机中心的线
现在我想知道关于寻找角度的两件事 - 如果距离不准确(但可以由人在运行时估计),是否可以知道角度假设两个点在图像中的同一平面上 - 如果点不在同一个平面上,我应该如何处理角度计算?
【问题讨论】:
你知道相机中心的坐标吗? 我假设这是图像本身的中心 你的意思是相机的中心位于图像平面上? 是的,这是我的假设 @user3079474 您应该拥有所有可用信息。如果没有,您将无法解决您的问题。 【参考方案1】:可以通过inner product实现。
如果您在 3D 空间中交谈,那么您的 x
(vector) 和 y
(vector) 应该采用 [a,b,f]
(a 和 b 是点) 的形式,其中 f 是图像平面到图像平面的距离相机中心和a
和a
是相机帧中对应的坐标。
如果它在 2D 空间中,那么您必须指定框架的原点并根据该框架找到 a
和 b
,并且您的 x
和 y
向量的形式为 [a,b]
.
【讨论】:
【参考方案2】:可以通过以下公式找到: Angle between two rays
K 是相机矩阵。 x1 和 x2 是以齐次形式给出的图像点,如 [u,v,1],d1 和 d2 是对应的 3D 点。
参见堪培拉澳大利亚国立大学的 Richard Hartley 和牛津大学的 Andrew Zisserman:“计算机视觉中的多视图几何”,第 2 版,第209了解更多详情。
反转相机矩阵非常简单。看 https://www.imatest.com/support/docs/pre-5-2/geometric-calibration-deprecated/projective-camera/了解更多详情。
【讨论】:
以上是关于使用 OpenCV 查找图像中两点之间的角度的主要内容,如果未能解决你的问题,请参考以下文章
在图像[OpenCV / Python]中查找[x,y]旋转坐标位置