OpenCV:初始化图像

时间:2013-10-22 13:38:33

标签: opencv image-processing

我正在实现一些方法,我正在使用OpenCv函数。

我使用视频的许多帧,我需要实现最好的代码,以避免内存的一些问题。我有些疑惑:

怀疑1 :怎么会更好?

  • 选项1

    IplImage * image1 = NULL;

    ...

    IplImage * picture_sintetica(..){

    ...
    
    if (image1 == NULL){
    
        image1 = cvCreateImage( cvSize(width, height), IPL_DEPTH_8U, 3);
    }
    
    ...
    

    }

  • 选项2

    IplImage * image1 = NULL;

    ...

    IplImage * picture_sintetica(...){

    ...
    
    image1 = cvCreateImage( cvSize(width, height), IPL_DEPTH_8U, 3);
    
    ...
    cvReleaseImage(&image1);
    

    }

我认为在选项2中,image1被创建多次(每次调用名为picture_sintetica的方法)并且使用选项1它将只创建一次,但我不确定...而在其他我见过使用选项2的例子。

怀疑2:它等效声明图像等于零(IplImage * image1 = 0;),为NULL(IplImage * image1 = NULL;)o放置任何东西(IplImage * image1; )?

怀疑3:何时建议使用名为cvCloneImage的函数,何时使用cvCopy更好?

非常感谢!

1 个答案:

答案 0 :(得分:0)

Doubt3 开始,根据opencv documentation,您需要在需要图像的完整副本(包括标题,数据和ROI)时使用cvCloneImage。

Doubt1:查看您的代码,没有理由认为image1应该多次创建,除非您的代码在cicle中。

怀疑2:我建议您查看this answer