获取cv::Mat大小:
mymat.size()
获取cv::Mat指定位置的值:需指定数据类型,且注意数据类型应与存入时的数据类型一致,否则会导致不抛出异常的数据错误
mymat.at<float>(,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=;i<;i++){
cv::Point2d p;
p.x=src.at<float>(,i);
p.y=src.at<float>(,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_);