4 1 4顯示建立Mat物件的七種方法

2021-08-14 18:30:58 字數 2768 閱讀 3055

1.方法一  使用mat()建構函式

mat m(2, 2, cv_8uc3, scalar(0, 255, 255));

cout << "m= " << endl << " " << m << endl << endl;

執行結果:

其中各引數解釋:

cv_8uc(

n)   表示8位的unsigned char型,每個元素由n個通道組成的n通道,常見1,2,3,4通道。 

cv_8sc(

n)    表示8位的signed char型的,每個元素由n個通道組成的n 通道,常見1,2,3,4通道。  

cv_16uc(

n)表示16位的unsigned char型,每個元素由n個通道組成的n通道,常見1,2,3,4通道。

cv_16sc(

n) 表示16位的signed char型的,每個元素由n個通道組成的n 通道,常見1,2,3,4通道。

cv_32sc(

n)表示32位的signed char型的,每個元素由n個通道組成的n 通道,常見1,2,3,4通道。

cv_32fc(

n)表示32位的float型的,每個元素由n個通道組成的n 通道,常見1,2,3,4通道。

cv_64fc(

n)表示64位的float型的,每個元素由n個通道組成的n 通道,常見1,2,3,4通道。

2.方法二  在c\c++中通過建構函式進行初始化,可以使用更多的通道數

其中sz陣列指定了每個維度的尺寸。

3.方法

三、為已存在的iplimage指標建立資訊頭

//mat mtx(img);//轉換iplimage*->mat,在opencv3.0已經被棄用

mat a = cvarrtomat(img);中的轉換版本

imshow("picture", a);

waitkey();

執行結果:

4.方法

四、利用mat類中的create()成員函式進行mat類的初始化操作,但此種方法不能為矩陣設初始值

mat c; c.create(4, 4, cv_8uc(2));

cout << "c= " << endl << c << endl;

執行結果:

5.方法

五、採用matlab形式的初始化方式

mat e = mat::eye(4, 4, cv_64f);//單位陣

cout << "e= " << endl <

mat o = mat::ones(2, 2, cv_32f);//全為1

cout << "o= " << endl<

mat z = mat::zeros(3, 3, cv_8uc1);//全為0

cout << "z= " << endl <

執行結果:

6.方法

六、對小矩陣使用逗號分隔式初始化函式

7.方法

七、使用成員函式clone()或copyto()為乙個已經存在的mat物件建立乙個新的資訊頭。

//6.對小矩陣使用逗號分隔式初始化函式

mat d = (mat_(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);

cout << "d=" << endl << d << endl;

//7.為已經存在的物件建立新的資訊頭,使用成員函式clone()或者copyto()

mat rowclone = d.row(1).clone();

cout << "rowclone=" << endl << " " << rowclone << endl;

執行結果:

Opencv顯示建立Mat物件的七種方式

方式一 方式二 建立三維的矩陣 建立乙個超過二維的矩陣 include includeusing namespace std using namespace cv int main 3維的 為2 2 2的 元素全部為0 mat array2 3,sz,cv 8uc1,scalar 0 因為是三維的,...

JavaScript 建立物件的七種方式

工廠模式 function createperson name,job return o var person1 createperson jiang student var person2 createperson x doctor 可以無數次呼叫這個工廠函式,每次都會返回乙個包含兩個屬性和乙個方...

物件導向(建立物件) 七種模式總結

工廠模式 工廠模式雖然解決了建立多個相似物件的問題,但卻沒有解決物件識別的問題 即怎樣知道乙個物件的型別 function createperson name,age,job return o var person1 createperson nicholas 29,software enginee...