我正在实现一些方法,并且正在使用 OpenCv 函数。
我处理视频的许多帧,我需要实现最佳代码以避免内存出现一些问题。我有些疑惑:
疑问1:如何更好?
选项 1:
IplImage* image1 = NULL;
...
IplImage* 图片_sintetica(..){
... if (image1 == NULL){ image1 = cvCreateImage( cvSize(width, height), IPL_DEPTH_8U, 3); } ...
}
选项 2:
IplImage* image1 = NULL;
...
IplImage* 图片_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更好?
非常感谢!