作者redonizuka (R大)
看板C_and_CPP
標題[問題] 影像(記憶體釋放操作請問)
時間Sun Apr 19 08:03:37 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) codeblocks
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) opencv
問題(Question):目前透過網路上昨日的網誌來學習opencv,
其中有一篇他介紹了,(資料結構操作及運算-資料結構的記憶體釋放)
裏頭有一隻Webcam的範例程式,主要在示範說由於記憶體若沒適當回收的話
會導致程式記憶體堵塞,甚至死當,在此將其程式碼貼至下方,
想詢問遇到這方面的問題要如何解決,實際的解決方法是?
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <cv.h>
#include <highgui.h>
#include <stdio.h>
int main()
{
CvCapture *capture;
IplImage *frame,*frame1,*frame2;
frame1=cvCreateImage(cvSize( 640, 480),IPL_DEPTH_8U, 3);
frame2=cvCreateImage(cvSize( 640, 480),IPL_DEPTH_8U, 3);
capture =cvCaptureFromCAM( 0);
cvNamedWindow( "Webcam", 0);
while( true)
{
frame = cvQueryFrame(capture);
cvSub(frame,frame1,frame2);
cvAdd(frame2,frame,frame2);
cvFlip(frame2,frame2, 0); // frame2->origin=1;
cvShowImage( "Webcam",frame2);
if(cvWaitKey( 10)>= 0) break;
printf( "%d",frame->origin);
printf( "%d",frame2->origin);
frame1=cvCloneImage(frame);
}
cvReleaseCapture( &capture);
cvDestroyWindow( "Webcam");
}
補充說明(Supplement):
程式部落格來源:
http://yester-place.blogspot.com/
所提之問題頁面:
http://yester-place.blogspot.com/2008/07/blog-post_23.html
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 190.115.179.71
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429401819.A.ECB.html
推 GoIt: 適當的去release memory 04/19 08:21
推 xk4771127: Cloneimage會造成你frame1記憶體重複創立 04/19 12:58
推 Raymond0710: 昨日的教學都太舊了 建議你改成2.0的寫法 04/19 16:20
想再深入問如何在這程式裡面,適當地去release memory
另外由於昨日的教學是目前能讓我較明瞭的教學網站
若愈改成2.0的寫法的話,是否有相關的教學網站能幫助,國外網站也行
因為我在學程式這上面上速度較慢,通常都是直接模仿程式碼開始
若有推薦的網站,我即會在將昨日教學看完後,再去修改為2,0
※ 編輯: redonizuka (190.115.177.114), 04/19/2015 22:15:14
推 EdisonX: 是只有我有看到 opencv 下載下來時附 pdf document 嗎 ? 04/19 22:42
→ redonizuka: 因為你,我也看到了,受益良多 04/20 01:58
→ redonizuka: 可惜那份pdf是c++的,我使用的是c 04/20 05:28
推 VSei: 推2F,這種寫法要及時release(迴圈內) 04/20 07:37
推 b90343024: 迴圈尾加個cvReleaseImage(&frame1); 04/20 11:42