我有以下函数从 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();
}