如何强制CV :: MAT表现为明智的指针

How to force cv::Mat to behave as a smart pointer

本文关键字:指针 何强制 CV MAT      更新时间:2023-10-16

我正在设计带有许多DLL和OPENCV的内部用法的C /CLI库。OPENCV矩阵是在Theese DLL之间传递的,这是我问题的来源:

您如何强制CV :: MAT表现类似于STD :: simel_ptr,std :: shared_ptr and std :: feek_ptr?

我所知道的CV :: MAT的行为与STD :: Shared_ptr相似(带有参考计数器),但是其他类型的智能指针呢?

到目前为止,最简单的方法是 std::unique_ptr<cv::Mat>。它具有对未来维护者显而易见的额外好处。

本身不会阻止其他人持有自己的cv::Mat副本,该副本将共享所有权。您可以部分防止这一点:如果可以共享所有权,则clone CV :: MAT before putting it into the STD :: sunily_ptr`。但是任何人都可以创建其他CV :: MAT共享所有权。