cvCopy與cvCloneImage、cvCopyimage的區別
阿新 • • 發佈:2018-11-08
如果設定了ROI等引數的時候,cvCopy只是複製被設定的區域,複製到一個和所設定引數相吻合的新的IplImage中
而cvCloneImage則是將整個IplImage結構複製到新的IplImage中,其中的ROI等引數也會一同複製。新的IplImage將會和原來的一模一樣。
cvCopy的原型是:
void cvCopy( const CvArr* src, CvArr* dst, const CvArr* mask=NULL );
在使用這個函式之前,你必須用cvCreateImage()一類的函式先開一段記憶體,然後傳遞給dst。cvCopy會把src中的資料複製到dst的記憶體中。
cvCloneImage的原型是:
IplImage* cvCloneImage( const IplImage* image );
在使用函式之前,不用開闢記憶體。該函式會自己開一段記憶體,然後複製好image裡面的資料,然後把這段記憶體中的資料返回給你。
clone是把所有的都複製過來,也就是說不論你是否設定Roi,Coi等影響copy的引數,clone都會原封不動的克隆過來。
copy就不一樣,只會複製ROI區域等。用clone複製之後,源影象在記憶體中消失後,複製的影象也變了,而用copy複製,源影象消失後,複製的影象不變