1. 程式人生 > >openCV clone()與copyTo()的區別

openCV clone()與copyTo()的區別

 本文轉自:http://blog.csdn.net/CorCplusplusorjava/article/details/24641011 [cpp] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1. // Mat is basically a class with two data parts: the matrix header and 
  2. //a pointer to the matrix containing the pixel values 
  3. #include <iostream>
  4. #include <highgui.h>
  5. usingnamespace std ;  
  6. usingnamespace
     cv ;  
  7. int main()  
  8. {  
  9.     Mat image = imread("1.png" , 0) ;  
  10.     //Mat image1(image) ;//僅是建立了Mat的頭部分,image1與image共享資料區
  11.     //Mat image1 = image ;//僅是建立了Mat的頭部分,image1與image共享資料區
  12.     //Mat image1 = image.clone() ;//完全拷貝,把image中的所有資訊拷貝到image1中
  13.     Mat image1 ;  
  14.     image.copyTo(image1) ;//拷貝image的資料區到image1中,在拷貝資料前會有一步:image1.create(this->size , this->type)
  15.     for(int h = 0 ; h < image1.rows ; ++ h)  
  16.     {  
  17.         uchar* ptr = image1.ptr(h) ;  
  18.         for(int w = 0 ; w < image1.cols ; ++ w)  
  19.         {  
  20.             ptr[w] = 0 ;  
  21.         }  
  22.     }  
  23.     imshow("image" , image) ;  
  24.     imshow("image1" , image1) ;  
  25.     waitKey() ;  
  26.     return 0 ;  
  27. }  
// Mat is basically a class with two data parts: the matrix header and 
//a pointer to the matrix containing the pixel values 

#include <iostream>
#include <highgui.h>

using namespace std ;
using namespace cv ;

int main()
{
	Mat image = imread("1.png" , 0) ;
	
	//Mat image1(image) ;//僅是建立了Mat的頭部分,image1與image共享資料區
	//Mat image1 = image ;//僅是建立了Mat的頭部分,image1與image共享資料區
	//Mat image1 = image.clone() ;//完全拷貝,把image中的所有資訊拷貝到image1中
	Mat image1 ;
	image.copyTo(image1) ;//拷貝image的資料區到image1中,在拷貝資料前會有一步:image1.create(this->size , this->type)
	for(int h = 0 ; h < image1.rows ; ++ h)
	{
		uchar* ptr = image1.ptr(h) ;
		for(int w = 0 ; w < image1.cols ; ++ w)
		{
			ptr[w] = 0 ;
		}
	}
	imshow("image" , image) ;
	imshow("image1" , image1) ;
	waitKey() ;
	return 0 ;
}

相關推薦

openCV clone()copyTo區別

 本文轉自:http://blog.csdn.net/CorCplusplusorjava/article/details/24641011 [cpp] view plaincopyprint? // Mat is basically a class with 

多線程startrun區別

通過 系統 調用 tar start 時間片 運行 實現 狀態 start()用來啟動一個線程,當調用start()方法時,系統才會開啟一個線程,通過Thread類中的start()方法來啟動的線程處於就緒狀態(可運行狀態),此時並沒有運行,一旦得到CPU時間片,

python list 中extendappend區別

def changextend(str): "print string with extend" mylist.extend([40,50,60]); print(mylist) return def changeappend(str): mylist.append([7,8,9

js parseInt()Number區別

說到轉換成數字型別,我首先想到的是parseInt()方法,後來接觸多了才發現還有一個Number()方法,同樣是轉換成數字型別,這兩種方法有什麼不同的呢? 1.parseInt():      parseInt(string,radix):將字串解析轉化為數字型別,返回的是

Qt button buttons 區別

QMouseEvent Class QMouseEvent::button() constReturns the button that caused the eventQMouseEvent::buttons() constReturns the button st

== equals方法的區別

return 使用 自定義類 [] true 適用於 內容 lean 編譯 * equals()方法的使用 * * 1.java.lang.Object類中的equals()方法的定義: * * public boolean equals(Object obj

DM8168 OpenCV嘗試評估編譯ARM版OpenCV

gnu ner arm sdn ack all finish tools 再次  交叉編譯opencv2.3.1,並在DM8168 cortex A8中執行圖像處理。 開發環境: PC:ubuntu12.04LTS。Intel

Thread的runstart區別

目的 程序 結束 生成 復制代碼 lee main 線程調度 順序 Java的線程是通過java.lang.Thread類來實現的。VM啟動時會有一個由主方法所定義的線程。可以通過創建Thread的實例來創建新的線程。每個線程都是通過某個特定Thread對象所對應的方法ru

extend()append區別

網上有很多對這兩個函式的區別講解,但我覺得都講的不是很清楚,記憶不深刻。這樣解釋清楚且容易記住。 list.append(object) 向列表中新增一個物件object list.extend(sequence) 把一個序列seq的內容新增到列表中 1 2 3 4

getMethodgetDeclaredMethod區別

getMethod():獲取自身能用所有的公共方法。1.類本身的public 2.繼承父類的public 3.實現介面的public getDeclaredMethod():獲取類自身宣告的所有方法。 getMethod()獲取繼承父類的public方法舉例: pu

I/O複用——select、pollepoll區別

       select()、poll()、epoll()三組I/O複用系統呼叫都可以同時監聽多個檔案描述符。它們將等待由timeout引數指定的超時時間,直到一個或者多個檔案描述符上有事件發生時返回,返回值就是就緒檔案描述符的數量,返回0表示沒有事件發生。 1、sele

printf()scanf的重要區別

1.對於printf()來說,程式設計時應想方設法編寫好它的格式控制串,以便使輸出資料看起來整齊;而對於scanf() 來說,格式控制串越簡潔越好。編寫的格式控制串越複雜,使用者(在執行此程式並進行)輸入時要敲擊的鍵 就越多,除了給使用者增添麻煩外,對使用者的輸入工作毫無幫助

Map集合中value方法keySet、entrySet()區別

Map<String,String> map = new HashMap<String,String>();map.put(“01”, “zhangsan”);map.put(“02”, “lisi”);map.put(“03”, “wangwu”);Collection<St

正則驗證,matchtest函式的區別

test是RegExp的方法,引數是字串,返回值是boolean型別。 match是String的方法,引數是正則表示式,返回值是陣列。 案例: 1 //判斷日期型別是否為YYYY-MM-DD格式的型別 2 function IsDate(){ 3 va

Map集合中valuekeySet entrySet 區別

在Map集合中 values():方法是獲取集合中的所有的值----沒有鍵,沒有對應關係, KeySet(): 將Map中所有的鍵存入到set集合中。因為set具備迭代器。所有可以迭代方式取出所有的鍵,再根據get方法。獲取每一個鍵對應的值。 keySet():迭代後只能通過get()取k

C/C++ 之 fill 的運用及memset區別

fill()函式引數:fill(first,last,val);  // first 為容器的首迭代器,last為容器的末迭代器,last為將要替換的值。 如:要將陣列a中的前100項的值賦值為1;

Echo、print、print_r區別

表達式 類型變量 一個 pri truct ray echo 格式化 輸出 echo可以一次輸出多個值,多個值之間用逗號分隔。echo是語言結構(language construct),而並不是真正的函數,因此不能作為表達式的一部分使用。echo是php的內部指令,不是函

Java:運用while()do....whilefor

java 運用 while(true) { 操作; } 與 do{ 操作; }while(true) 作用於對大括號內操作的循環運行,只要條件判斷為“真”,就可以永久循環。 所以要寫對該操作的循環條件,不然會死循環,導致後續的操作無法執行。 兩個while有個區別: while()

rand srand

return 初始 其中 div signed std tdi 隨機數生成 AI 一 頭文件 <time.h>   srand()就是給rand()提供種子seed。   在C語言中,srand()與rand()是隨機函數,其中srand函數是偽隨機數發

static關鍵字newinstance

“static方法就是沒有this的方法。在static方法內部不能呼叫非靜態方法,反過來是可以的。而且可以在沒有建立任何物件的前提下,僅僅通過類本身來呼叫static方法。這實際上正是static方法的主要用途。” 這段話雖然只是說明了static方法的特殊之處,但是可以看出static關