我正在实现一些方法,并且正在使用OpenCv函数。
我使用视频的许多帧,因此我需要实现最佳代码以避免内存问题。我有些疑惑:
怀疑1 :会更好吗?
IplImage * image1 = NULL;
...
IplImage * picture_sintetica(..){
...
if (image1 == NULL){
image1 = cvCreateImage( cvSize(width, height), IPL_DEPTH_8U, 3);
}
...
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?
非常感谢!
最佳答案
从 Doubt3 开始,根据opencv documentation,当您需要图像的完整副本(包括标题,数据和ROI)时,应使用cvCloneImage。
怀疑1:查看您的代码,没有理由认为image1应该创建多次,除非您的代码在提示中。
怀疑2:,我建议看看this answer
关于opencv - OpenCV:初始化图像,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19519531/