我有以下的在功能上初始化爲零():如何正確初始化CV ::墊指針爲0矩陣
cv::Mat *m;
然後,在循環中,我分配新的矩陣與這個名字並將它們存儲在一個列表中。我希望他們初始化爲具有特定大小的零矩陣。
這是我的嘗試:
m = new cv::Mat::zeros(height, width, CV_32F);
我想這基於OpenCV的文檔中給出的例子。執行此操作的正確方法是什麼?
我有以下的在功能上初始化爲零():如何正確初始化CV ::墊指針爲0矩陣
cv::Mat *m;
然後,在循環中,我分配新的矩陣與這個名字並將它們存儲在一個列表中。我希望他們初始化爲具有特定大小的零矩陣。
這是我的嘗試:
m = new cv::Mat::zeros(height, width, CV_32F);
我想這基於OpenCV的文檔中給出的例子。執行此操作的正確方法是什麼?
從Mat::zeros文檔用它使用像這樣
cv::Mat m = cv::Mat::zeros(height, width, CV_32F);
如果你想使用在堆上分配一個Mat
使用
cv::Mat * m = new cv::Mat(cv::Mat::zeros(height, width, CV_32F));
// use m
delete m; // don't forget to delete m
如果我沒有弄錯,在堆上分配cv :: Mat通常是個壞主意? cv :: Mat結構在內部使用一個指向其圖像數據的堆指針,所以它不會佔用堆棧上的空間。它在內部使用引用計數,一旦其引用計數等於零,就會自行刪除。 – escapecharacter
在大多數情況下,在堆上分配Mat是個壞主意。 –
似乎':: zeros'初始化甚至不能在堆上工作。 –
根據該文檔,你可以做這樣的' cv :: Mat m = cv :: Mat :: zeros(height,width,CV_32F);'。 http://opencv.willowgarage.com/documentation/cpp/core_basic_structures.html#cv-mat-zeros – detunized