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 的影象,並將...