opencv之图像创建注意事项

         在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)之间不断的进行申请和释放),导致内存会出现来不及释放而上涨的风险,在大规模服务运行中会出现这种情况。

建议,增加一个变量,保证内存的恒定,减少变动。

   

你可能感兴趣的:(OpenCV学习)