视觉SLAM十四讲PnP问题中:opencv智能指针、solvePnP、Rodrigues
0、PnP问题是在已知特征点的世界坐标及其在某一相机位姿下的归一化坐标,求解相机坐标与世界坐标之间的旋转矩阵和平移向量
1、智能指针Ptr
img_1.ptr<uchar>(row/y)[column/x]
//图像img_1的智能指针,指向的数据结构为8位无符号整数,
原因:img_1的格式为CV_8UC3,即三通道,每一通道数据类型为8位无符号整数。
//智能指针适用于所有Mat类
2、solvePnP函数
2.1用法
vector<Point3d> pt_3;//世界坐标系下的3维坐标(前一张图片中特征点在此相机坐标系下的坐标)
vector<Point2d> pt_2;//像素平面坐标(后一张图片)
Mat K;//相机内参矩阵
Mat();//镜头畸变矫正系数,Mat()表示默认值0
Mat r;//solvePnP函数求出的旋转向量
Mat t;// solvePnP函数求出的平移向量
cv::solvePnP( pt_3, pt_2, K, Mat(), r, t, false, SOLVEPNP_ITRATIVE)
2.2数据结构
3、Rodrigues函数
Mat R;//求出的旋转矩阵
cv::Rodrigues( r, R )//r是旋转向量