OpenCV cv Mat的深拷貝 淺拷貝問題

2021-10-16 04:17:54 字數 1059 閱讀 2903

目錄

先看結論

**演示下

效果什麼樣

今天抽空整理了一下關於opencv中mat這個容器的深淺拷貝問題

什麼是深拷貝?什麼又是淺拷貝?

而到了opencv的mat時,有幾種賦值方式分別為:

1、  b = a.clone();

2、  a.copyto(b);

3、  b = a;

4、  b(a);

先給結論!先給結論!先給結論!

深拷貝是 b = a.clone(); 和 a.copyto(b);

淺拷貝是 b = a;和 b(a);

本著實踐出真知的目的簡單寫了下面的測試方法 懶得看的童鞋可以自行散場了.. 

#include int main()
效果圖:

看完上面**的童鞋會注意到其中還測試了opencv中的roi(感興趣區域------就是影象擷取),在opencv中

roi它也是淺拷貝!它也是淺拷貝!它也是淺拷貝!

int main()

// std::string str = "clone";

// cv::puttext(mimgray,str,cv::point(200,100),cv::font_italic, 1, cv::scalar(255,0,0),2);

imshow("imrgb", imrgb);

imshow("mimgray", mimgray);

waitkey();

return 0;

}//試驗結果: imrgb還是彩色影象,沒有發生變換, mimgray變成了灰度影象

結束!

淺拷貝 深拷貝

copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...

深拷貝 淺拷貝

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝 深拷貝

retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...