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

标签 c++ opencv memory-management mat

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

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

顺便说一句,以防万一,我使用的是 OpenCV 3.1。

最佳答案

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

img.u->refcount

关于c++ - 如何确定 cv::Mat 使用的是内部数据还是外部数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950554/

相关文章:

c++ - Eclipse CDT - 链接 libcrypto.so 用于交叉编译

android - 如何提高android中的OpenCV人脸检测性能?

javascript - JavaScript 对象的终结器

C#:管理大内存缓冲区

c++ - 如何创建和填充 jsoncpp 数组 (jsoncpp.sourceforge)

c++ - 有没有办法在不在当前范围内的 lambda 中使用变量?

iphone - 微笑检测(除了 OpenCV 之外还有其他选择吗?)

python - 如何从图像中删除水平和垂直线

C - 当函数内部分配内存时,谁负责内存分配?

c++ - 创建动态二维数组的其他方法?