Mat的常見屬性
- data uchar型的指針。Mat類分爲了兩個部分:矩陣頭和指向矩陣數據部分的指針,data就是指向矩陣數據的指針。
- dims 矩陣的維度,例如5*6矩陣是二維矩陣,則dims=2,三維矩陣dims=3.
- rows 矩陣的行數
- cols 矩陣的列數
- size 矩陣的大小,size(cols,rows),如果矩陣的維數大於2,則是size(-1,-1)
- channels 矩陣元素擁有的通道數,例如常見的彩色圖像,每一個像素由RGB三部分組成,則channels = 3
下面的幾個屬性是和Mat中元素的數據類型相關的。
- type
表示了矩陣中元素的類型以及矩陣的通道個數,它是一系列的預定義的常量,其命名規則爲CV_(位數)+(數據類型)+(通道數)。具體的有以下值:
這裏U(unsigned integer)表示的是無符號整數,S(signed integer)是有符號整數,F(float)是浮點數。CV_8UC1 CV_8UC2 CV_8UC3 CV_8UC4 CV_8SC1 CV_8SC2 CV_8SC3 CV_8SC4 CV_16UC1 CV_16UC2 CV_16UC3 CV_16UC4 CV_16SC1 CV_16SC2 CV_16SC3 CV_16SC4 CV_32SC1 CV_32SC2 CV_32SC3 CV_32SC4 CV_32FC1 CV_32FC2 CV_32FC3 CV_32FC4 CV_64FC1 CV_64FC2 CV_64FC3 CV_64FC4
例如:CV_16UC2,表示的是元素類型是一個16位的無符號整數,通道爲2.
C1,C2,C3,C4則表示通道是1,2,3,4
type一般是在創建Mat對象時設定,如果要取得Mat的元素類型,則無需使用type,使用下面的depth - depth
矩陣中元素的一個通道的數據類型,這個值和type是相關的。例如 type爲 CV_16SC2,一個2通道的16位的有符號整數。那麼,depth則是CV_16S。depth也是一系列的預定義值,
將type的預定義值去掉通道信息就是depth值:
CV_8U CV_8S CV_16U CV_16S CV_32S CV_32F CV_64F - elemSize
矩陣一個元素佔用的字節數,例如:type是CV_16SC3,那麼elemSize = 3 * 16 / 8 = 6 bytes - elemSize1
矩陣元素一個通道佔用的字節數,例如:type是CV_16CS3,那麼elemSize1 = 16 / 8 = 2 bytes = elemSize / channels