今天调程序发现一个问题,代码如下
std::vector<cv::Mat>PointCloud;
cv::Mat Pw =cv::Mat::zeros(3,1,CV_32FC1);//世界坐标
Pw.at<float>(0,0)= 0.0;
Pw.at<float>(1,0)= 0.0;
Pw.at<float>(2,0)= 0.0;
PointCloud.push_back(Pw);//将世界原点添加到点云中
Pw.at<float>(0,0)= 10.0;//更改坐标
Pw.at<float>(1,0)= 10.0;
Pw.at<float>(2,0)= 10.0;

本文介绍了在使用std::vector存储OpenCV的Mat对象时遇到的问题。通过示例代码,作者展示了如何由于Mat对象的浅拷贝导致数据意外共享,从而在向点云容器中添加坐标点时出现错误。解决方案是使用深拷贝以确保每个Mat对象拥有独立的数据副本。
最低0.47元/天 解锁文章
657





