我有以下函数从 OpenCV 中提取子图像cv::Mat
void Process(int a,int b,int c,int d)
{
// Extract img(a:b,c:d) each time
subImg = img(cv::Range(a, b), cv::Range(c,d));
}
我Process()循环调用。在每次调用时, 的值都在a,b,c,d不断变化。如果subImg已经声明为cv::Mat subImg;,我可以做上述吗?即OpenCV可以动态调整大小subImg还是我必须采用基于指针的方法,我声明:
cv::Mat* subImg; // Initialized to NULL in constructor
并修改函数如下:
void Process(int a,int b,int c,int d)
{
// Extract img(a:b,c:d) each time
if(subImg) delete subImg;
subImg = img(cv::Range(a, b), cv::Range(c,d)).clone();
}