2011-11-19 186 views
1

我正在用C++風格開發一個opencv 2.3項目。OpenCV錯誤:內存不足

在應用程序中,我加載視頻並處理每一幀,並用Mat對象做一些事情。一段時間後,我得到一個不足的內存錯誤。

我喜歡捕捉的框架:

FCapture >> FImage; 
FDetector->execute(FImage); 

在執行我複製圖像並將其保存在一個std ::向量列表。同時檢查imageblobs這樣的:

vector<vector<Point> > contours; 
findContours(FImage, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE); 

我知道它有點難以回答的問題出在哪裏可以,但它不可能在這裏發佈到整個程序代碼。也許有人可以告訴我在哪裏必須小心複製Mat對象或其他可能成爲錯誤原因的OpenCv對象。

+0

聽起來像一個典型的內存泄漏。你使用後釋放分配的圖像? – Throwback1986

+0

使用'valgrind'一個小測試輸入,看看是否有任何明顯的錯誤。 –

回答

0

有趣:

In the execute I copy the image and save it in a std::Vector list

及本聲明以及:

After some time I get a Insufficient memory Error.

OpenCV的圖像可以是相當大的取決於它們的大小,並根據你所說的話,我認爲您的載體正在增長更快,那麼你可以從中刪除數據,導致內存不足錯誤。

有意義嗎?如果您不斷向矢量添加數據,有一天您會耗盡內存來存儲新數據。

0

我不知道如果我有類似的問題,但看到我的帖子在OpenCV中自己的網站 here

附:我想把它作爲一個評論,但由於我的「Newbee-ness」,我仍然無法評論答案:(