基于OpenCV和光流的旋转和位置跟踪
我想使用光流跟踪OpenCV中对象的旋转和平移。到目前为止,我得到了类似的结果:基于OpenCV和光流的旋转和位置跟踪,opencv,opticalflow,Opencv,Opticalflow,我想使用光流跟踪OpenCV中对象的旋转和平移。到目前为止,我得到了类似的结果: 调用goodFeaturesToTrack以查找初始功能 调用calcOpticalFlowPyrLK以跟踪特征点的移动 调用findHomography查找图像A中的点如何移动到图像B 调用透视变换以基于单应性移动点 调用solvePnPRansac查找旋转矩阵和平移 载体 在这一点上,我试图采取不同的旋转和平移垫之间的图像,并将它们添加到一个初始的旋转和平移矩阵 cv::solvePnPRansac(patte
cv::solvePnPRansac(pattern.points3d, _points2d, calibration.getIntrinsic(), calibration.getDistorsion(), raux, taux);
raux.convertTo(Rvec, CV_32F);
taux.convertTo(Tvec, CV_32F);
cv::Mat_<float> rotMat(3, 3);
cv::Rodrigues(Rvec, rotMat);
cv::Mat_<float> transDiff = _prevTranslation - Tvec;
cv::Mat_<float> rotDiff = _prevRotation - rotMat;
_absRotation += rotDiff;
_absTranslation += transDiff;
cv::solvePnPRansac(pattern.points3d,_points2d,calibration.getinfrance(),calibration.getDistorsion(),raux,taux);
劳克斯·康弗托(Rvec,CV_32F);
taux.convertTo(Tvec,CV_32F);
cv::Mat_uoRotmat(3,3);
cv::罗德里格斯(Rvec、rotMat);
cv::Mat_uuTransdiff=u prevTranslation-Tvec;
cv::Mat_uRotdiff=prevRotation-rotMat;
_absRotation+=rotDiff;
_Abstratranslation+=transDiff;
这种方法的问题是平移向量不跟随图像。向量倾向于保持在范围内
[0.02 0.2-1.5]
它离这个位置不远
谢谢。整个视频都一样吗?如果不是,那么可能是因为帧之间没有太大差异。尝试在录制时降低帧速率,或在处理时跳过几帧。