2013-10-09 36 views
0

的我試圖使用方法:我怎麼能存儲和訪問圖像墊的OpenCV

cv::Mat source; 
const int histSize[] = {intialframes, initialWidth, initialHeight}; 
source.create(3, histSize, CV_8U); 

在一個矩陣保存多張圖片。但是,當我這樣做,它給了我dims = 3-1rowscols。 這是正確的嗎? 如果不是什麼錯誤呢? 如果是的話我怎樣才能一個接一個地訪問我的圖片?

回答

1

讀類cv::Mat的文檔 - >doc 可以看到,cv::Mat.rowscv::Mat.cols是行列數的數量的2D陣列否則返回-1。您正在創建一個3D數組。

cv::Mat doc中編寫了如何訪問元素。 通過創建方法,矩陣是連續的,並以平面組織的方式。


編輯

類定義的代碼之後的文檔中的文本的第一部分告訴你如何訪問使用step[]參數矩陣的矩陣中的每個元素:

如果要訪問圖像i的像素(u, v)需要獲取指向數據的指針並使用指針的算術達到所需像素:

int sizes[] = { 10, 200, 100 }; 
cv::Mat M(3, sizes, CV_8UC1); 

//get a pointer to the pixel 
uchar *px = M.data + M.step[0] * i + M.step[1] * u + M.step[2] * v; 

//get the pixel intensity 
uchar intensity = *px; 
+0

我已經閱讀了文檔,但仍然困惑,爲什麼沒有創建,如果它被創建,我怎麼才能輕鬆訪問它..我是新來opencv,所以請原諒我簡單的愚蠢問題。你能告訴我怎樣才能訪問它...... – khan

+0

看看編輯 – Michele