Opencv 函式copyTo() 與clone()

NO IMAGE

copyTo 也是深拷貝,但是否申請新的記憶體空間,取決於dst矩陣頭中的大小資訊是否與src一至,若一致則只深拷貝並不申請新的空間,否則先申請空間後再進行拷貝.

clone 是完全的深拷貝,在記憶體中申請新的空間

用法:

Mat A  = Mat::ones(4,5,CV_32F);

Mat B = A.clone()    //clone 是完全的深拷貝,在記憶體中申請新的空間,與A獨立

Mat C;

A.copyTo(C) //此處的C矩陣大小與A大小不一致,則申請新的記憶體空間,並完成拷貝,等同於clone()

Mat D = A.col(1);

A.col(0).copyTo(D) //此處D矩陣大小與A.col(0)大小一致,因此不會申請空間,而是直接進行拷貝,相當於把A的第1列賦值給第二列