1.vector类型转换
ORB提取关键点时,类型为
std::vector<KeyPoint> keypoints_1;
而做Ransac直线拟合所需点的类型为
std::vector<cv::Point2f> points;
转换代码为:
void KeyPointsToPoints(vector<KeyPoint> kpts, vector<Point2f> &pts)
{
for (int i = 0; i < kpts.size(); i++)
{
pts.push_back(kpts[i].pt);
}
}
调用为:
KeyPointsToPoints(keypoints_1, points);
2.vector定期清除问题
当声明一个全局vector变量时,需要考虑这个vector变量是否需要定期清除!否则会一直往容器里加,导致拟合直线斜率变化很小.清除vector代码为:
keypoints_1.clear();
points.clear();
3.调试过程中可以输出一些变量来判断一下是否正确
std::cout << "k " <<k<< std::endl;