k这是我的菜鸟,因为我真的没有在C和目标c上做过这么多。
Mat mymat(myIplImage, true);
这显然不仅将mymat声明为局部变量,而且还将内容从myIplImage复制。我无法解决语法问题。如果它是这样的话我会更舒服:
Mat mymat = new Mat(myIplImage, true); // in c++
你能解释原始陈述背景中发生的事情吗?
谢谢,
答案 0 :(得分:2)
实际上这是C ++。第一个语句基本上与第二个语句完全相同,只是你自己没有处理内存,也就是你不再需要它时delete mymat
,它会被自动销毁当它超出范围时。
答案 1 :(得分:2)
如Simon所述,第一个版本为您处理内存分配。在第一个版本中,在幕后,可能会在构造函数中调用new
或malloc
或类似内容,并在mat的析构函数中调用delete
或free
。这样,如果你只是制作一个Mat(而不是它们的数组),你不需要考虑分配。
请记住,如果您想获得所有细节,可以随时查看Mat构造函数的源代码或OpenCV的任何其他部分。