[問題] 影像(記憶體釋放操作請問)

看板C_and_CPP (C/C++)作者 (R大)時間11年前 (2015/04/19 08:03), 11年前編輯推噓6(602)
留言8則, 7人參與, 最新討論串1/1
開發平台(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

04/19 08:21, , 1F
適當的去release memory
04/19 08:21, 1F

04/19 12:58, , 2F
Cloneimage會造成你frame1記憶體重複創立
04/19 12:58, 2F

04/19 16:20, , 3F
昨日的教學都太舊了 建議你改成2.0的寫法
04/19 16:20, 3F
想再深入問如何在這程式裡面,適當地去release memory 另外由於昨日的教學是目前能讓我較明瞭的教學網站 若愈改成2.0的寫法的話,是否有相關的教學網站能幫助,國外網站也行 因為我在學程式這上面上速度較慢,通常都是直接模仿程式碼開始 若有推薦的網站,我即會在將昨日教學看完後,再去修改為2,0 ※ 編輯: redonizuka (190.115.177.114), 04/19/2015 22:15:14

04/19 22:42, , 4F
是只有我有看到 opencv 下載下來時附 pdf document 嗎 ?
04/19 22:42, 4F

04/20 01:58, , 5F
因為你,我也看到了,受益良多
04/20 01:58, 5F

04/20 05:28, , 6F
可惜那份pdf是c++的,我使用的是c
04/20 05:28, 6F

04/20 07:37, , 7F
推2F,這種寫法要及時release(迴圈內)
04/20 07:37, 7F

04/20 11:42, , 8F
迴圈尾加個cvReleaseImage(&frame1);
04/20 11:42, 8F
文章代碼(AID): #1LCl3RxB (C_and_CPP)
文章代碼(AID): #1LCl3RxB (C_and_CPP)