2012-11-06 69 views
5

我幾乎沒有,但我不是很瞭解如何轉換無符號字符**到OpenCV的墊子

unsigned char ** to a cv::Mat 

我知道,一個品種的.data部分::墊UCHAR *

我使用的返回功能和圖像的形式...

unsigned char ** output; 

但我的代碼的其餘部分使用CV ::墊的。我沒有我使用的庫的源代碼,所以不知道它在做什麼。

編輯 感謝您的幫助球員,我已經做到了這一點......

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output); 
imshow("this is a test",TempMat); 

但圖像是黑色的,所以我現在需要找出是否確實有什麼存在與否。

對不起,由於缺乏研究,我在緊迫的期限內完成,不是不做作業,而是試圖準備好向教授展示結果!

+2

你知道你正在返回的雙指針的寬度和高度? – sgarizvi

回答

8

你必須使用Mat constructor的指針數據:

// constructor for matrix headers pointing to user-allocated data 
    Mat(int _rows, int _cols, int _type, void* _data, size_t _step=AUTO_STEP); 
    Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP); 

你必須轉換到void**void*在此之後使用它。

+0

謝謝,我已經去做了。請參閱編輯下一個問題 – Oliver9523

+1

@ Oliver9523輸入數據的格式('void **')是什麼?如果它是一個指向二維數組圖像數據的指針,則應將其轉換爲一維數組。 – ArtemStorozhuk

+0

我假設這是一個2D數組,謝謝。我會看看轉換它。 – Oliver9523

0

也許你應該在

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, *output); 

刪除*使它就像這樣:

cv::Mat TempMat = cv::Mat(h, w, CV_8UC1, output);