MAT类如何存储数据
生活随笔
收集整理的這篇文章主要介紹了
MAT类如何存储数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
看上去這是一個比較簡單的問題,在2.0以上的版本中,使用Mat類來儲存一幅圖像。但是具體的說,Mat類中,又是如何儲存的呢?
在opencv自帶的幫助手冊上有這么一段話:
通過這兩個式子,我們可以略知一二:首先,Mat不僅可以存圖像,也可以用來存放其他高維的數據。數據存在data指針所指向的地址中的,對于高維數據(dim維),每個數據的地址是用上面式子算的;它的一個特例是2維數據(圖像),式子簡化成了下面的那個公式。
為了驗證公式的正確性,我寫了一個小測試程序:
[cpp]?view plaincopy
注意,因為8bit圖像對應的像素值為0~255,所以opencv使用了uchar類型,這樣非常節省空間;但是如果想看到具體的像素值,那么得把他轉化為int。
我們看到,使用at函數和直接求出地址然后對地直接引得到的像素值是相同的。at操作是一個模板函數,所以對于灰度圖像,返回的直接就是對應的像素值;而對于彩色圖像,返回的是一個3元組Vec3b。這個結構是3個uchar連續的放在一起的。所以對于彩色圖像,直接使用公式獲得的是B分量,如果想獲得其他分量,那么得在原始的地址上加上一個sizeof(uchar)。
總結
以上是生活随笔為你收集整理的MAT类如何存储数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OPENCV中的数据结构总结
- 下一篇: ubuntu 配置samba