使用 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 是图像平面到图像平面的距离相机中心和aa是相机帧中对应的坐标。

如果它在 2D 空间中,那么您必须指定框架的原点并根据该框架找到 ab,并且您的 xy 向量的形式为 [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 查找图像中两点之间的角度的主要内容,如果未能解决你的问题,请参考以下文章

Python Pygame找到两点之间的角度

在图像[OpenCV / Python]中查找[x,y]旋转坐标位置

提高两点之间的几何角度

查找 2 条折线之间的角度

使用 OpenCV 的视角和光照条件略有不同的两张图像之间的差异

OpenCV模板匹配 - 如何确定匹配模板的角度