Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV查找对象';带solvePnPRansac的s位置,不带对应点_Python_C++_Opencv - Fatal编程技术网

Python OpenCV查找对象';带solvePnPRansac的s位置,不带对应点

Python OpenCV查找对象';带solvePnPRansac的s位置,不带对应点,python,c++,opencv,Python,C++,Opencv,我试图通过跟踪物体上已知的2D LED图案,在现实世界坐标系中找到物体相对于相机位置的位置 我做了摄像机校准。我能够成功地检测到模式中的LED,并在图像框中找到它们的精确坐标。但是,这些点与图案中的已知坐标并不完全一一对应,而是以随机顺序排列的。通信在诸如或之类的函数中很重要,这将是我的首选 我如何才能找到这些点集之间的对应关系,或者我应该像solvePnPRansac那样使用其他函数来计算变换?因为您没有询问如何估计对象和相机之间的相对姿势,我将把这个话题放在一边,重点讨论如何找到每个LED与

我试图通过跟踪物体上已知的2D LED图案,在现实世界坐标系中找到物体相对于相机位置的位置

我做了摄像机校准。我能够成功地检测到模式中的LED,并在图像框中找到它们的精确坐标。但是,这些点与图案中的已知坐标并不完全一一对应,而是以随机顺序排列的。通信在诸如或之类的函数中很重要,这将是我的首选


我如何才能找到这些点集之间的对应关系,或者我应该像solvePnPRansac那样使用其他函数来计算变换?

因为您没有询问如何估计对象和相机之间的相对姿势,我将把这个话题放在一边,重点讨论如何找到每个LED与其2D投影之间的对应关系

为了获得唯一的1对1对应集,您使用的LED图案应在旋转方面明确无误。例如,您可以使用常规的NxN网格,左上角的单元格包含一个额外的LED,或者位于圆形上的LED位于单个LED下方,等等。然后,查找对应关系的方法取决于您选择的模式

对于圆形图案,可以执行以下操作:

  • 估计各点的重心
  • 找到消歧点,这是唯一一个不位于圆上的点,并将其他点中最近的点定义为第一个观测点
  • 通过增加相对于重心的角度对剩余点进行排序(即时钟顺序)
  • 对于常规网格模式,可以尝试以下操作:

  • 找到栅格的四个角(具有最小/最大坐标的角)
  • 估计将这四个角变换为规则NxN正方形角(具有正交角)的单应性
  • 使用此单应变换变换其他点
  • 找到消歧点,这是唯一一个
    X层(X)
    Y层(Y)
    接近0.5的消歧点,并将四个初始角点中最近的一个定义为第一个观测点
  • 通过增大相对于栅格中心的角度并减小到栅格中心的距离来对其余点进行排序

  • 您还可以研究函数
    findChessboardCorners
    (请参阅calib3D模块中的
    calibinit.cpp
    )使用的算法,该函数使用类似的方法对检测到的角点进行排序。

    我认为详细说明您面临的问题是一个好主意。你能举个例子吗?我想我已经讲清楚了。我有一个移动机器人,上面有一束红外LED,以某种模式排列。我想跟踪机器人相对于摄像机的位置和方向。我用棋盘B&W模式尝试了这种方法,用于相机校准,得到了很好的结果。我想通过使用红外LED提高跟踪的准确性和速度。因为我不能再使用findChessboardCorners,它返回排序点,所以我需要自己找到对应关系。LED是否以任何方式区分?根据颜色、照明模式或整体形状?不完全是。如果是的话,对我来说就足够简单了。这些LED在图像中显示为白点。我用红外滤光片过滤所有可见光。