【发布时间】:2013-10-22 22:02:54
【问题描述】:
我正在实现一些方法,我正在使用 OpenCv 函数。
我处理视频的许多帧,我需要实现最佳代码以避免内存出现一些问题。我有一些疑问:
疑问一:如何更好?
-
选项 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: 是否等效声明图像等于0 (IplImage* image1 = 0;), 为NULL (IplImage* image1 = NULL;) o 放置任何东西(IplImage* image1; )?
疑问3:什么时候推荐使用cvCloneImage这个函数,什么时候使用cvCopy比较好?
非常感谢!
【问题讨论】: