建構函式方法建立Mat物件

2021-07-03 03:14:00 字數 1478 閱讀 5335

mat是乙個非常優秀的影象類,它同時也是乙個通用的矩陣類,可以用來建立和操作多維矩陣。mat類提供了一系列建構函式,可以方便的根據需要建立mat物件。

常用的建構函式有: 

1、mat::mat() 

無引數構造方法; 

2、mat::mat(int rows, int cols, int type) 

建立行數為 rows,列數為 col,型別為 type 的影象; 

3、mat::mat(size size, int type) 

建立大小為 size,型別為 type 的影象; 

4、mat::mat(int rows, int cols, int type, const scalar& s) 

建立行數為 rows,列數為 col,型別為 type 的影象,並將所有元素初始化為值 s; 

5、mat::mat(size size, int type, const scalar& s) 

建立大小為 size,型別為 type 的影象,並將所有元素初始化為值 s; 

6、mat::mat(const mat& m) 

將m賦值給新建立的物件,此處不會對影象資料進行複製,m和新物件共用影象資料; 

7、mat::mat(int rows, int cols, int type, void* data, size_t step=auto_step) 

建立行數為rows,列數為col,型別為type的影象,此建構函式不建立影象資料所需記憶體,而是直接使用data所指記憶體,影象的行步長由 step指定。 

8、mat::mat(size size, int type, void* data, size_t step=auto_step) 

建立大小為size,型別為type的影象,此建構函式不建立影象資料所需記憶體,而是直接使用data所指記憶體,影象的行步長由step指定。 

9、mat::mat(const mat& m, const range& rowrange, const range& colrange) 

建立的新影象為m的一部分,具體的範圍由rowrange和colrange指定,此建構函式也不進行影象資料的複製操作,新影象與m共用影象資料; 

10、mat::mat(const mat& m, const rect& roi) 

建立的新影象為m的一部分,具體的範圍roi指定,此建構函式也不進行影象資料的複製操作,新影象與m共用影象資料。

這些建構函式中,很多都涉及到型別type。type可以是cv_8uc1,cv_16sc1,…,cv_64fc4 等。裡面的 8u 表示 8 位無符號整數,16s 表示 16 位有符號整數,64f表示 64 位浮點數(即 double 型別);c 後面的數表示通道數,例如 c1 表示乙個

通道的影象,c4 表示 4 個通道的影象,以此類推。 

如果你需要更多的通道數,需要用巨集 cv_8uc(n),例如: 

mat m(3,2, cv_8uc(5));//建立行數為 3,列數為 2,通道數為 5 的影象

建立Mat物件

mat畫素點的儲存方法 mat的資料型別 cv 8u 8bit unsigned integers 0 255 8 bit unsigned integer uchar cv 8s 8bit signed integers 128 127 8 bit signed integer schar cv ...

Mat物件的構造

1.部分複製 一般情況下,只會複製mat物件的頭和指標部分,不會複製資料部分。相當於c 中的指標 mat a imread imgfilepath mat b a 2.完全複製 複製頭部和資料部分 相當於c 中的拷貝乙份備份 mat f a.clone 3.mat m 3,3,cv 8uc3,sch...

Mat常見建構函式

mat類 無參構造方法 建立行數為rows,列為col,型別為type的影象 影象元素型別,如cv 8uc3等 建立大小為size,型別為type的影象 建立行數為 rows,列數為 col,型別為 type 的影象,並將所有元素初始 化為值 s 建立大小為 size,型別為 type 的影象,並將...