【发布时间】: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