獲取cv::Mat大小:
mymat.size()
獲取cv::Mat指定位置的值:需指定數據類型,且注意數據類型應與存入時的數據類型一致,否則會導致不拋出異常的數據錯誤
mymat.at<float>(0,i);
欲將如下大小為1*17的cv::mat轉為std::vector<cv::Point2d>
使用如下的代碼:
std::vector<cv::Point2d> transform_mat_to_vector2d(cv::Mat src){ std::vector<cv::Point2d> dst; for(int i=0;i<17;i++){ cv::Point2d p; p.x=src.at<float>(0,i); p.y=src.at<float>(1,i); dst.push_back(p); } return dst; }
發現得到的vector值改變了
后來發現原因是cv::Mat中的元素類型為double(如下),以float格式讀出則會出錯
cv::Mat rep_pt2d_;
cv::projectPoints(p_cam_3d17,cam_r,cam_t,camInstris,camDistort,rep_pt2d_);
std::vector<cv::Point2d> rep_p_2d17=transform_mat_to_vector2d(rep_pt2d_);