在opencv中进行图像创建时,比如imgIn.create(cvSize(1920, 1080), CV_8UC3); 然后进行分析的图像大小要求为(640.480),则需要对imgIn进行resize,此时基于两种考虑:
(1)为保证减少创建更多图像,会再定义一个Mat型数据imgIn2,然后再进行resize,即resize(imgIn,imgIn2,cvSize(640,480)),如下:
imgIn.create(cvSize(1920, 1080), CV_8UC3);
Mat imgIn2;//在类中可以声明成成员函数
resize(imgIn,imgIn2,cvSize(640,480);
这样的好处: 第一次新增加一个Mat型数据,后面imgIn2的大小不会变化,减少内存的变动。唯一的缺点只是多了一个变量。
(2)第二种方法是直接对imgIn进行resize,如下:
imgIn.create(cvSize(1920, 1080), CV_8UC3);
resize(imgIn,imgIn,cvSize(640,480);
这样的好处:减少一个变量imgIn2的定义;
这样的缺点:由于对imgIn通常对应着外界图像的输入(1920, 1080),而分析中任务中的大小要求为(640,480),导致对imgIn的内存会不断的进行变动(在(1920, 1080)和(640,480)之间不断的进行申请和释放),导致内存会出现来不及释放而上涨的风险,在大规模服务运行中会出现这种情况。
建议,增加一个变量,保证内存的恒定,减少变动。