2017-01-31 32 views
1

我正在将OpenCV与具有自己的参考计数图像类的遗留代码库相集成。我添加了一个构造函数,用于从cv :: Mat创建这些图像。作为一个优化,我想利用cv :: Mat的refcounting机制&做一个浅拷贝,当它拥有数据时。但是,当它使用外部数据时,我需要强制执行深层复制。如何确定cv :: Mat是使用内部还是外部数据?

的问题是,从阅读的文档,我没有看到一个方法来确定是否简历::垫拥有自己的数据,或者没有。这可以做到(无需修改OpenCV)?

顺便说一句,万一它很重要,我使用的是OpenCV 3.1。

+0

你看看简历的构造函数和析构函数的代码::他们垫如何决定是否垫持有内部或外部数据? – Micka

+0

我盯着mat.hpp,matrix.cpp和umatrix.cpp足够长的时间来欣赏它们的复杂性。 –

+0

我错过了opencv2/core/mat.inl.hpp。我认为一些内联函数可能隐藏在某个地方。 –

回答

2

使用cv :: Mat的成员UMatData * u。它应该是0,如果简历::垫使用外部数据,否则你可以得到裁判计数器如下

img.u->refcount 
+0

我会在早上尝试这个,如果正确的话可以奖励。谢谢。 –

+0

已确认。谢谢。 –

相关问题