【opencv】opencv之Mat屬性



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_(位數)+(數據類型)+(通道數)。具體的有以下值:
    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
    這裏U(unsigned integer)表示的是無符號整數,S(signed integer)是有符號整數,F(float)是浮點數。
    例如: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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章