1作用
帧或关键帧的光心求解。
2 所属位置及代码
2.1 Frame::SetPose()
(1)声明:
include/Frame.h
cpp// Set the camera pose. void SetPose(cv::Mat Tcw);
(2)定义:
src/Frame.cc
cppvoid Frame::SetPose(cv::Mat Tcw) { mTcw = Tcw.clone(); UpdatePoseMatrices(); } void Frame::UpdatePoseMatrices() { mRcw = mTcw.rowRange(0,3).colRange(0,3); mRwc = mRcw.t(); mtcw = mTcw.rowRange(0,3).col(3); mOw = -mRcw.t()*mtcw; }
2.2 KeyFrame::SetPose()
(1)声明:include/KeyFrame.h
cpp// Pose functions void SetPose(const cv::Mat &Tcw);
(2)定义:src/KeyFrame.cc
cppvoid KeyFrame::SetPose(const cv::Mat &Tcw_) { unique_lock<mutex> lock(mMutexPose); Tcw_.copyTo(Tcw); cv::Mat Rcw = Tcw.rowRange(0,3).colRange(0,3); cv::Mat tcw = Tcw.rowRange(0,3).col(3); cv::Mat Rwc = Rcw.t(); Ow = -Rwc*tcw; Twc = cv::Mat::eye(4,4,Tcw.type()); Rwc.copyTo(Twc.rowRange(0,3).colRange(0,3)); Ow.copyTo(Twc.rowRange(0,3).col(3)); cv::Mat center = (cv::Mat_<float>(4,1) << mHalfBaseline, 0 , 0, 1); Cw = Twc*center; }