解释线面这段代码 Curpoint.clear(); Prepoint.clear(); CurpointRmDynamic.clear(); PrepointRmDynamic.clear(); for(auto it = mvKeys.begin(); it != mvKeys.end(); ++it) { Curpoint.push_back(it->pt); } //double mom = nmatches; //std::chrono::steady_clock::time_point t1 = std::chrono::steady_clock::now(); cv::calcOpticalFlowPyrLK(imGray, imGrayPre, Curpoint, Prepoint, State, Err, cv::Size(21, 21), 3, cv::TermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 30, 0.01)); /* std::chrono::steady_clock::time_point t2 = std::chrono::steady_clock::now(); double ttrack= std::chrono::duration_cast<std::chrono::duration<double> >(t2 - t1).count(); std::cout << "calcOpticalFlow time =" << ttrack*1000 << std::endl; */ int Cur_keypoint_sum = Curpoint.size(); int Pre_keypoint_sum; cv::Mat FundMat;
时间: 2024-04-06 09:35:02 浏览: 72
易语言源码易语言求线面夹角.rar
这段代码的主要作用是使用OpenCV库中的calcOpticalFlowPyrLK函数进行光流跟踪。光流跟踪是一种计算图像中物体或场景移动的技术,它通过比较两幅图像中同一位置上的像素来计算出它们之间的运动。具体来说,这段代码的步骤是:
1. 清空Curpoint、Prepoint、CurpointRmDynamic和PrepointRmDynamic四个vector。
2. 遍历mvKeys中的所有关键点,并将它们的坐标存储到Curpoint中。
3. 调用calcOpticalFlowPyrLK函数,对两幅图像imGray和imGrayPre进行光流跟踪,其中Curpoint是当前帧的关键点坐标,Prepoint是前一帧的关键点坐标,State和Err是输出参数,cv::Size(21, 21)是窗口大小,3是金字塔层数,cv::TermCriteria(CV_TERMCRIT_ITER | CV_TERMCRIT_EPS, 30, 0.01)是迭代终止条件。
4. 计算Curpoint中关键点的数量,并将结果存储到Cur_keypoint_sum中。
5. 创建一个cv::Mat类型的变量FundMat,用于存储基础矩阵。
阅读全文