Opencv中Mat的data数据只定义为uchar*类型,
opencv中Mat的數據定義為指向uchar 的指針,而構造函數又提供了許多其他類型。
其實數據在內存中是一維存儲的,而圖像基本結構是二維的,3D圖像還會是三維的;同時,彩色圖像還有多個channel(通道);為了便于編程使用,opencv對一維數據進行矩陣的抽象封裝,這個就是Mat類;Mat是一個基礎類,封裝了構造函數,重載運算符和基礎的運算函數(很多類似于matlab的函數);Mat_類就是利用模板類型繼承于Mat,所以opencv是有模板類型的,就是Mat_。
不管是什么類型,Mat類中的data成員是一個unsigned char *,指向數據的第一個字節(同時還定義了datastart,dataend等,參看源代碼),當你使用高級類型的getMat().data函數獲得該對象的數據時,可以通過強制轉換訪問來獲得你的數據類型比如我想看float類型圖像的第[3,5]像素點的值,可以:((float )data)[5width+3]來訪問,這樣的訪問比較原始。一般opencv core里面提供的算法是輸入是InputArray和OutputArray;這兩個和Mat有很大的關系,void * 就是指向Mat對象,同時加入了一些flag來判斷Mat的類型比如是不是img等。
轉載自:https://zhidao.baidu.com/question/872977803343572692.html
總結
以上是生活随笔為你收集整理的Opencv中Mat的data数据只定义为uchar*类型,的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中operator的两种用法
- 下一篇: 链表的一些leetcode题目+pyth