【问题标题】:Finding angle between two points in an image using OpenCV使用 OpenCV 查找图像中两点之间的角度
【发布时间】:2014-04-18 07:09:04
【问题描述】:

我正在尝试找出图像中两点之间的角度。该角度以相机的中心线为基准。

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

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

【问题讨论】:

  • 你知道相机中心的坐标吗?
  • 我假设这是图像本身的中心
  • 你的意思是相机的中心位于图像平面上?
  • 是的,这是我的假设
  • @user3079474 您应该拥有所有可用信息。如果没有,您将无法解决您的问题。

标签: c++ opencv


【解决方案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/了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 2018-07-09
      • 2019-01-21
      相关资源
      最近更新 更多