2010-05-04 126 views
1

我有一個循環,通過一些視頻處理/計算圖像。我想將圖像保存在處理中的最高值的循環中,但我在循環結束時臨時存儲圖像並掙扎了一下。而循環MAXFRAME由在OpenCV中存儲圖像和指針

if(currentvalue > maxvalue) { 
    maxvalue = currentvalue; 
    maxframe = frame; 
} 

我知道,我所存儲的MAXFRAME變量是相同的指針發現

的圖像/幀被初始化這樣

IplImage* frame = 0; 
IplImage* maxframe = 0; 

到當前加載在幀指針中的幀。當一個新幀被加載到幀變量中時,這也將被maxframe指針指向。因此,當我保存maxframe指向的圖像時,無論計算值是什麼,我都會將最後一張圖像保存在循環中。

我已經嘗試了很多不同的解決方案,但我似乎無法解決這個問題。誰能幫我? :)

回答

1

可能幀IplImage *得到OpenCv內部參考系統回收。您是否嘗試過使用IplImage * cvCloneImage(const IplImage * image)來完成圖像的深層副本?順便說一句,如果你使用cvMat(或cv :: Mat)來保存圖像,使用openCv 2.0或更高版本...使用cv :: Mat圖像,然後使用image.clone();

+0

謝謝,這工作! 我會考慮將代碼更新到更高版本以後..這是使用舊示例的問題。 ;) – BackstreetStruts 2010-05-04 09:42:23