我正在使用 OpenCV,这是整个事情的新手。
我有一个场景,我正在墙上投影,我正在建造一种带有摄像头的机器人。我想知道如何处理图像,以便获得相机跟踪的斑点坐标的真实世界值?
我正在使用 OpenCV,这是整个事情的新手。
我有一个场景,我正在墙上投影,我正在建造一种带有摄像头的机器人。我想知道如何处理图像,以便获得相机跟踪的斑点坐标的真实世界值?
首先,您需要校准相机的内在特性。使用印在纸板上的棋盘图案来做到这一点,OpenCV 有这方面的方法,尽管也有完成的工具。为了得到一个想法,我编写了一些 python 代码来校准实时视频流,沿着相机以不同的角度和距离移动纸板。看看这里:http ://svn.ioctl.eu/pub/opencv/py-camera_intrinsic/
然后你需要校准相机的外部,即相机的位置。你的世界坐标。您可以在墙上放置一些标记,定义这些标记的 3D 位置,然后让 OpenCV 为此校准外部 (cvFindExtrinsicCameraParams2)。在我的示例代码中,我计算了外部 wrt。棋盘,这样我就可以在相机的正确视角下渲染茶壶。您必须根据自己的需要进行调整。
我假设您只投影到平坦的表面上。您必须知道几何形状才能获得检测到的斑点的 3D 坐标。然后,您可以在相机图像中找到斑点并了解内在、外在和几何形状,您可以根据内在/外在为相机中的每个斑点投射光线,并计算每条此类光线与已知几何形状的交集。然后,交叉点就是您在世界空间中的 3D 点,blob 投影到该点。