2013-10-21 90 views
0

我發現在這個簡單的OpenCV的代碼中的內存泄漏:內存泄漏在OpenCV中集大小

VideoCapture* capture = new VideoCapture(0); 
Mat frame; 
while (true) { 
    capture->set(CV_CAP_PROP_FRAME_WIDTH, 1600); 
    capture->set(CV_CAP_PROP_FRAME_HEIGHT, 1200); 
    capture->read(frame); 
} 

這是整個代碼。每次通過while循環時,幾個MB都會泄漏。我剛剛嘗試了frame.release(),但它沒有幫助。刪除設置大小的線可以解決問題,但在我的真實代碼中,我想改變大小,所以這不是解決方案。它以正確的尺寸獲得圖像。

我在做一些愚蠢的事情嗎?

順便說一下,我使用的是Logitech B910網絡攝像頭。

謝謝!

+0

,因爲你讀有一種靜態幀/指向駕駛員記憶,您可以加入您的OS/OpenCV的版本?這可能是一個非常具體的捕獲實現的問題 – berak

+0

我使用Ubuntu 12.04的apt-get版本,它是OpenCV 2.3.1。 – CGW

回答

1

您是否需要更改每一幀的讀數大小?

一旦設定,相機會產生相同的大小,直到你重置

+0

沒錯。這段代碼只是爲了演示錯誤。在我的應用程序中,我希望大部分時間都能看到小圖像,然後在其他時間切換到高質量的圖像。 – CGW