【问题标题】:Extract the X, Y, Z location of a moving sphere with a fixed camera using openCV使用openCV用固定相机提取运动球体的X、Y、Z位置
【发布时间】:2020-05-31 11:17:02
【问题描述】:

我是 opencv 新手,我想在我的项目中应用姿势估计。基本上,我想做的是提取球体的 X、Y、Z 位置。检测球体的相机位于固定位置,而球体相对于世界参考系在空间中移动。

我知道您必须先进行相机校准才能提取此处讨论的内在和外在参数:youtube.com/watch?v=HoBKG82A9xs

我在这里找到了一个很好的参考资料,它实际上解释了我想在我的项目中做的事情: https://www.fdxlabs.com/calculate-x-y-z-real-world-coordinates-from-a-single-camera-using-opencv/ 但是,z 位置是固定的,并且在此项目中是已知的。此外,项目中的透视校准是在一个固定的平面上完成的。这意味着检测仅在该特定平面上是准确的。

现在我的问题是如何将它应用到在空间中移动的球体中?或者您能建议一种不同的方法来准确提取 X、Y、Z 位置吗?我需要使用两个相机还是一个就可以了?

【问题讨论】:

  • 很高兴看到你已经做了什么。这个人有一些非常好的解释:github.com/tizianofiorenzani你可以使用 2 个摄像头来找到你的对象的 3D 位置,或者你可以得到如果您可以测量球体的确切大小,则仅使用一台相机进行 z 坐标..
  • 在球体上选择一些可见和可计算的点(图像和对象坐标),相对于中心并使用solvePnp函数
  • 到目前为止,我可以检测到球体并提取其中心。我还使用了opencv的开源相机标定来提取相机的内在参数。我打算修改代码,以便在校准期间输入更多图像。
  • 我大约在两周前开始使用计算机视觉,我明白了这个概念,但我仍然对如何使用 3D 检测来实现它感到困惑。顺便说一句,我用球体作为机械手末端执行器的标记。

标签: python opencv image-processing computer-vision opencv3.0


【解决方案1】:

当然,对于 3D 坐标,可以使用 2 个摄像头进行深度预测。但是,我建议你尝试一件事。由于您正在跟踪球体,因此您可以轻松跟踪 X 和 Y 坐标。如果工作环境是固定的,您可以根据球体的面积创建 Z 坐标公式。当您远离相机时,区域将减小,Z 坐标将增加。您可以通过 try-n-error 方法设计公式,如果我将球体移动 1 英尺,将减少多少面积。

如果工作环境发生变化,您可以在开始使用时添加校准阶段。就像在开始预测之前保持球体为 0 级,将其拉回 1 英尺。将其向前推 1 英尺。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2021-02-23
    • 2018-12-13
    • 1970-01-01
    • 2012-09-05
    相关资源
    最近更新 更多