OpenCV 中 Mat 等结构的内存分配

Posted

技术标签:

【中文标题】OpenCV 中 Mat 等结构的内存分配【英文标题】:Memory allocation for structures like Mat in OpenCV 【发布时间】:2014-03-18 18:48:33 【问题描述】:

我知道 Mat a = b 只是将 b 的引用复制到 a,没有分配单独的内存。

但是在下面的代码中:

VideoCapture cap(0);
Mat frame;

for(i = 0; i<10; i++)
    cap.read(frame);

在每次迭代中,都会更新 Mat 变量。这是否意味着在每个循环中都会分配新的内存。如果是这样,之前分配的内存会发生什么?是毁了还是没毁?在 10 次迭代结束时,系统中使用的内存是否等于 10*sizeof(Mat) 或者每次更新 A 时都会覆盖分配给 Mat 帧的内存?

【问题讨论】:

【参考方案1】:

在这种情况下,VideoCapture 会更新 frame,并且不会创建 Mat 的新副本。 Mat 在每次迭代中都会被覆盖。

【讨论】:

以上是关于OpenCV 中 Mat 等结构的内存分配的主要内容,如果未能解决你的问题,请参考以下文章

openCV Mat 基础

OpenCV Mat的总结

OpenCV Mat中的动态内存释放错误

2019-10-01 opencv图像数据结构之Mat

OpenCV入门——基础

我是不是必须在 Opencv C 包装器中为 C++ 接口释放 New 分配的内存