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...