C++ opencv三角形点生成NaN值
我试图从运动代码实现标准结构,但三角形点会产生NaN值。 我执行以下步骤-C++ opencv三角形点生成NaN值,c++,opencv,C++,Opencv,我试图从运动代码实现标准结构,但三角形点会产生NaN值。 我执行以下步骤- 获取图像1和图像2的ORB功能 匹配特征 使用FindSentialMat()从匹配的特征和可用的相机内在信息中获取基本矩阵 使用recoverPose()获取摄影机2的姿势。假设摄像机1位于原点 获取camera1和camera2的投影矩阵 使用triangulatePoints()获取三维点 我还使用camera1和camera2的投影矩阵以及上面获得的匹配点尝试了Matlab triangulate()函数。在Ma
但是在C++中使用OpenCV(OpenCV 3.3),我得到了Na值。< P>我也面临OpenCultPoT从OpenCV中遇到的问题。 这是因为输入点阵列的类型错误:
- 点的形状应为:2xN或尺寸为1xN或Nx1的双通道矩阵
- 必须是浮动类型强>
除此之外,我能想到的另一件事可能是,可能计算出的3d点是无穷大的,因此在转换为欧几里德坐标后,它们被零->NaN分割。您验证了步骤1、2、3、4和5的结果了吗?我的意思是,你在OpenCV的每个步骤中都得到了正确的数据吗?你能发布用于三角点的代码吗?是的,对于步骤1和2,我使用drawMatches()查看匹配点,它们看起来是一致的。对于步骤3、4、5,我将计算值输入到Matlab三角剖分函数,这也给了我一致的结果。我调用triangulatePoints()如下-vector src,dst;//图像1和图像2上的匹配点Mat point3D;三角点(cam1、cam2、src、dst、point3D);//cam1和cam2是3x4矩阵