opencv中的Mat詳解

2021-10-08 18:22:12 字數 2738 閱讀 8391

1.初始化

mat-the basic image container 最最基本的函式,所有在opencv中都是用mat形式來操作的。

//初始化乙個mat

mat a,c;

a = imread(ar**[1],imread_color);

mat b(a); //複製a給b

c = a; //賦值運算

mat d(a,rect(10,10,100,100)); //使用乙個矩形

mat e = a(range::all(), range(1,3)); //使用行列邊界

mat f = a.clone();

mat g;

a.copyto(g);

顯式的建立乙個mat物件

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

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

結果

在上面的cv_8uc3是什麼意思呢?

cv_[the number of bits per item][signed or unsigned][type prefix]c[the channel number]
所以這裡8uc3的意思是,我們使用8bit長的無正負的字元型別,每個畫素有三個通道。

scalar是什麼意思呢?

int sz[3] = ;

mat l(3,sz, cv_8uc(1), scalar::all(0));

cv::mat::create 函式

m.create(4,4, cv_8uc(2));

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

結果

mat e = mat::eye(4, 4, cv_64f);    //對角矩陣

cout << "e = " << endl << " " << e << endl << endl;

mat o = mat::ones(2, 2, cv_32f);

cout << "o = " << endl << " " << o << endl << endl;

mat z = mat::zeros(3,3, cv_8uc1);

cout << "z = " << endl << " " << z << endl << endl;

結果

mat的輸出

cout << "r (default) = " << endl <<        r           << endl << endl;

cout << "r (python) = " << endl << format(r, formatter::fmt_python) << endl << endl;

cout << "r (csv) = " << endl << format(r, formatter::fmt_csv ) << endl << endl;

cout << "r (numpy) = " << endl << format(r, formatter::fmt_numpy ) << endl << endl;

cout << "r (c) = " << endl << format(r, formatter::fmt_c ) << endl << endl;

結果:

其他items的輸出

2d point:

point2f p(5, 1);

cout << "point (2d) = " << p << endl << endl;

3d point:

point3f p3f(2, 6, 7);

cout << "point (3d) = " << p3f << endl << endl;

OpenCV之Mat類詳解

學習mat矩陣,了解影象的儲存和mat矩陣的使用 2001年opencv剛出來的時候,是基於c語言介面而建。為了在記憶體 memory 中存放影象,當時採用名為 iplimage 的c語言結構體。其中最大的不足要數手動記憶體管理,使用者要為開闢和銷毀記憶體負責。一旦 開始變得越來越龐大,會越來越多地...

opencv中Mat的屬性

類似cv 8uc1是mat的型別,其定義為type cv 位數 資料型別 通道數 cv 8uc1 0 cv 8uc2 8 cv 8uc3 16 cv 8uc4 24 depth 0 cv 8sc1 1 cv 8sc2 9 cv 8sc3 17 cv 8sc4 25 depth 1 cv 16uc1 ...

opencv中的Mat結構操作

從檔案中讀入一副影象 mat img imread filename 如果你讀入乙個jpg檔案,預設情況下將建立乙個3通道影象。如果你需要灰度 單通道 影象,使用如下語句 mat img imread filename,0 將影象儲存到乙個檔案 mat img imwrite filename 要獲...