如何确定cv :: Mat是使用内部还是外部数据?

时间:2017-01-31 05:52:13

标签: c++ opencv memory-management mat

我将OpenCV与具有自己的ref-counting图像类的遗留代码库集成在一起。我添加了一个构造函数,用于从cv :: Mat创建这些图像。作为优化,我想利用cv :: Mat的引用计数机制&当它拥有数据时,制作浅拷贝。但是,当它使用外部数据时,我需要强制进行深层复制。

问题在于,通过阅读文档,我没有看到确定cv :: Mat是否拥有其数据的方法。可以这样做(不修改OpenCV)吗?

BTW,如果重要,我使用的是OpenCV 3.1。

1 个答案:

答案 0 :(得分:3)

使用cv :: Mat的成员UMatData * u。如果cv :: Mat使用外部数据,它应该为0,否则你可以按如下方式获得ref计数器

img.u->refcount