LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

Mat-vector

2022/12/29

Mat-vector

今天看ORB-SLAM3的代码中发现存储Mat的vector中存在一些坑/妙用

简单来讲就是以下这段代码,如果外部改变image,vector里的Mat也会被相应地改变

std::vector<cv::Mat> image_list;
cv::Mat image = cv::imread("../test.png");
image_list.push_back(image);

如果你不知道这个是浅拷贝,然后外部又不小心改变了image,那就是个坑

但是如果已经知道了这个规则,就可以直接操作外部变量进而来修改vector中的元素

特别是vector里的Mat只是外部image的一部分时,会更方便简单


平常使用为了保险起见,放入vector前clone一下就好

image_list.push_back(image.clone());