OpenCV Mat基础认知感
OpenCV是一個開源的供開發(fā)的計算機(jī)視覺處理庫,涵蓋的內(nèi)容包括圖像處理,機(jī)器學(xué)習(xí)。由c到c++ ,再到各平臺的跨平臺框架。
Mat - 圖像容器
Mat類用于表示一個多維的單通道或者多通道的稠密數(shù)組。能夠用來保存實(shí)數(shù)或復(fù)數(shù)的向量、矩陣,灰度或彩色圖像,立體元素,點(diǎn)云,張量以及直方圖(高維的直方圖使用SparseMat保存比較好)。簡言之,Mat就是用來保存多維的矩陣的。
在接口層面上,Mat是OpenCV進(jìn)行圖像處理的基本結(jié)構(gòu)定義。可以簡單的理解為就是一個圖片抽象類,但它不只表示圖像、還能表示立體、矩陣。
Mat屬性
-
data uchar型的指針。Mat類分為了兩個部分:矩陣頭和指向矩陣數(shù)據(jù)部分的指針,data就是指向矩陣數(shù)據(jù)的指針。
-
dims 矩陣的維度,例如5*6矩陣是二維矩陣,則dims=2,三維矩陣dims=3.
-
rows 矩陣的行數(shù)(平常我們說的圖像的高度)
-
cols 矩陣的列數(shù)(平常我們說的圖像的寬度)
-
size 矩陣的大小 (簡單理解為圖像的像素點(diǎn)),size(cols,rows),如果矩陣的維數(shù)大于2,則是size(-1,-1)
-
channels 矩陣元素?fù)碛械耐ǖ罃?shù),例如常見的彩色圖像,每一個像素由RGB三部分組成,則channels = 3
-
type
表示了矩陣中元素的類型以及矩陣的通道個數(shù),它是一系列的預(yù)定義的常量,其命名規(guī)則為CV_(位數(shù))+(數(shù)據(jù)類型)+(通道數(shù))。具體值如下:
U(unsigned integer)表示的是無符號整數(shù),S(signed integer)是有符號整數(shù),F(float)是浮點(diǎn)數(shù)。例如:CV_32F就表示浮點(diǎn)數(shù)。
值得說明的是上表中的具體值、值、值,是指OpenCV中對這些值的類型做了一次枚舉定義,枚舉出來的值也就是上表中的值。不要混淆了。 如:CV_8UC1 = 0 ,CV_8SC1 = 1 -
depth
矩陣中元素的一個通道的數(shù)據(jù)類型,這個值和type是相關(guān)的。例如 type為 CV_16SC2,一個2通道的16位的有符號整數(shù)。那么,depth則是CV_16S。depth也是一系列的預(yù)定義值,
將type的預(yù)定義值去掉通道信息就是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
矩陣 一個元素占用的字節(jié)數(shù),例如:type是CV_16SC3,那么elemSize = 3 * 16 / 8 = 6 bytes -
elemSize1
矩陣元素 一個通道 占用的字節(jié)數(shù),例如:type是CV_16CS3,那么elemSize1 = 16 / 8 = 2 bytes = elemSize / channels
type 和 depth
總結(jié)
以上是生活随笔為你收集整理的OpenCV Mat基础认知感的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gensee移动SDK之(二)协议
- 下一篇: 云麦体脂秤华为体脂秤_华为、小米和有品体