更新:

我的原始问题在这里无效,对不起。我从中删除了一行,调用了m.create。如果对此没有答案,我将立即删除问题。

我刚刚注意到Mat::adjustROI似乎改变了wholeSizecv::Mat

Mat m(11,11,CV_32FC1);
Size wholeSize, old_size;
Point ofs;
m.locateROI(old_size, ofs);
m.adjustROI(0,old_size.height/2,0,old_size.width/2);
m.locateROI(wholeSize, ofs);
assert(wholeSize==old_size); // fails, wholeSize is now smaller

这正常吗?
如果是这样,我怀疑重新分配,否则这可能是内存泄漏的根源。
如果我说的对,什么时候重新分配?

最佳答案

我运行了您的代码,并且断言不会对我失败(MSVC 2010)。我使用调试器进行了逐步调试,并且在监视窗口中还可以看到两个大小都相等(x和y等于11)。我是OpenCV的初学者,但是从该函数的文档中看来,adjustROI不应修改“wholeSize”。

08-04 22:21