【发布时间】:2017-02-23 16:45:07
【问题描述】:
我有以下关于 OpenCV 的问题;我总是觉得 OpenCV 的内存管理或多或少有些奇怪,因此我不太确定以下操作是否安全(不会导致任何悬空指针、内存泄漏等)。
我有一个 Mat 对象,其中存储了一个图像,我想调整它的大小,使用 OpenCV 函数调整大小。
我想使用如下功能:
resize(image,image,Size(),paramStruct.upScaleRatio,paramStruct.upScaleRatio, INTER_LANCZOS4);
我也使用源对象作为目标。在这种情况下,OpenCV 的行为究竟如何,它是否在调整图像对象的大小后安全地释放图像对象中的旧数据(很可能是临时对象)?或者我应该始终使用与源不同的新 Mat 对象吗? (如果可能的话,我不希望这样做,因为它会使代码复杂化)
【问题讨论】:
-
否不必每次都新建一个Mat对象,这样实现是安全的:)
-
它是安全的,但可能会降低性能,因为它可能会更频繁地释放和分配新内存。
标签: c++ opencv image-processing