OpenCV Mat基础认知感
OpenCV是一個開源的供開發的計算機視覺處理庫,涵蓋的內容包括圖像處理,機器學習。由c到c++ ,再到各平臺的跨平臺框架。
Mat - 圖像容器
Mat類用于表示一個多維的單通道或者多通道的稠密數組。能夠用來保存實數或復數的向量、矩陣,灰度或彩色圖像,立體元素,點云,張量以及直方圖(高維的直方圖使用SparseMat保存比較好)。簡言之,Mat就是用來保存多維的矩陣的。
在接口層面上,Mat是OpenCV進行圖像處理的基本結構定義。可以簡單的理解為就是一個圖片抽象類,但它不只表示圖像、還能表示立體、矩陣。
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
-
type
表示了矩陣中元素的類型以及矩陣的通道個數,它是一系列的預定義的常量,其命名規則為CV_(位數)+(數據類型)+(通道數)。具體值如下:
U(unsigned integer)表示的是無符號整數,S(signed integer)是有符號整數,F(float)是浮點數。例如:CV_32F就表示浮點數。
值得說明的是上表中的具體值、值、值,是指OpenCV中對這些值的類型做了一次枚舉定義,枚舉出來的值也就是上表中的值。不要混淆了。 如:CV_8UC1 = 0 ,CV_8SC1 = 1 -
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,同理,它的具體值也分別定義為:
CV_8U = 0,
CV_8S = 1,
CV_16U = 2,
CV_16S = 3,
CV_32S = 4,
CV_32F = 5,
CV_64F = 6,
CV_USRTYPE1 = 7; -
elemSize
矩陣 一個元素占用的字節數,例如:type是CV_16SC3,那么elemSize = 3 * 16 / 8 = 6 bytes -
elemSize1
矩陣元素 一個通道 占用的字節數,例如:type是CV_16CS3,那么elemSize1 = 16 / 8 = 2 bytes = elemSize / channels
type 和 depth
總結
以上是生活随笔為你收集整理的OpenCV Mat基础认知感的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gensee移动SDK之(二)协议
- 下一篇: 云麦体脂秤华为体脂秤_华为、小米和有品体