當我調整墊子時,有一些奇怪的事情發生在我的OpenCV墊子上。從一個指針創建墊子,調整它的大小並返回指向新墊子的指針
這是OpenCV的頭: 第i個接收的指針從在Visual C#我的託管代碼:
unsigned char * PointerImage(unsigned char* matData, int widht)
我在OpenCV中創建從所述指針的墊:
cv::Mat OriginalImg(Size(widht,widht),CV_8UC3,matData);
如果我不應用調整大小,我發送指向我的mat創建到我的程序在Visual C#中,它工作正常,我可以在我的視覺C#中顯示圖像。
unsigned char *data = OriginalImg.data;
問題開始當我申請調整大小把圖像更大:
cv::resize(OriginalImg, OriginalImg, size(270,270));
現在我不能看到圖像。
這裏是整個代碼:
unsigned char * PointerImage(unsigned char* matData, int widht){
cv::Mat OriginalImg(Size(widht,widht),CV_8UC3,matData);
cv::resize(OriginalImg, OriginalImg, size);
unsigned char *data = OriginalImg.data;
return data;
}
我懷疑指針當我申請調整大小。 謝謝。
ouuch。看起來像非常破碎的設計 – berak
cv :: resize可能會重新分配OriginalImg。但是如果是這樣的話,當你離開PointerImage函數時,OriginalImg會被破壞,並且你會留下懸掛的數據ptr。 – berak
我以爲同樣,我應用marol的建議,現在它工作正常。謝謝你 – roma