opencv中的这个陈述是什么意思?

时间:2011-03-13 04:10:12

标签: c++ opencv

k这是我的菜鸟,因为我真的没有在C和目标c上做过这么多。

Mat mymat(myIplImage, true);

这显然不仅将mymat声明为局部变量,而且还将内容从myIplImage复制。我无法解决语法问题。如果它是这样的话我会更舒服:

Mat mymat = new Mat(myIplImage, true); // in c++

你能解释原始陈述背景中发生的事情吗?

谢谢,

2 个答案:

答案 0 :(得分:2)

实际上这是C ++。第一个语句基本上与第二个语句完全相同,只是你自己没有处理内存,也就是你不再需要它时delete mymat,它会被自动销毁当它超出范围时。

答案 1 :(得分:2)

如Simon所述,第一个版本为您处理内存分配。在第一个版本中,在幕后,可能会在构造函数中调用newmalloc或类似内容,并在mat的析构函数中调用deletefree 。这样,如果你只是制作一个Mat(而不是它们的数组),你不需要考虑分配。

请记住,如果您想获得所有细节,可以随时查看Mat构造函数的源代码或OpenCV的任何其他部分。