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

How can I determine whether a cv::Mat is using internal or external data?

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

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

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

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

img.u->refcount