OpenCV Mat

时间:2016-03-28 08:00:08

标签: c++ opencv memory dynamic

我想知道OpenCV Mat默认构造函数是否已经分配了内存?如doc

所示
>     These are various constructors that form a matrix. As noted in the Automatic Allocation of the Output Data, often the default constructor
> is enough, and the proper matrix will be allocated by an OpenCV
> function.

这是否意味着我的程序结束时发生的解除分配是正确的。那是对的吗?

实际上,我在程序结束时的内存释放阶段遇到了(核心转储)错误。我的初始代码引入了一个OpenCV Mat,即Mat A而没有初始化它会产生错误。我通过使用初始化来修复此错误,即A = Mat :: zeros(...)

我想证实我先前的疑问。如果确实如此,那么每次声明时都必须初始化Mat是非常不方便的

对不起我的错误解释!如果我不够清楚,请回复我

1 个答案:

答案 0 :(得分:2)

  

这是否意味着在我的结尾发生了解除分配   程序是正确的。这是对的吗?

func viewDidLoad() { super.viewDidLoad() button.enabled = false } 自行分配内存,并在共享相同数据的所有cv::Mat超出范围时释放内存(类似于cv::Mat)。

  

我想证实我先前的疑问。如果是真的,那就完全了   不方便每次声明时都必须初始化

不,这是错的。但是,由于您没有显示代码,我可以猜测您没有正确地将OpenCV链接到您的项目,因为在std::shared_ptr破坏阶段,非常好的链接OpenCV会导致错误。