我正在将 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/