[问题] 影像(内存释放操作请问)

楼主: redonizuka (R大)   2015-04-19 08:03:37
开发平台(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
作者: GoIt (冻物。)   2015-04-19 08:21:00
适当的去release memory
作者: xk4771127 (阿焦)   2015-04-19 12:58:00
Cloneimage会造成你frame1内存重复创立
作者: Raymond0710 (雷门)   2015-04-19 16:20:00
昨日的教学都太旧了 建议你改成2.0的写法
作者: EdisonX (卡卡兽)   2015-04-19 22:42:00
是只有我有看到 opencv 下载下来时附 pdf document 吗 ?
楼主: redonizuka (R大)   2015-04-20 01:58:00
因为你,我也看到了,受益良多可惜那份pdf是c++的,我使用的是c
作者: VSei (Chaos)   2015-04-20 07:37:00
推2F,这种写法要及时release(循环内)
作者: b90343024 (小太阳)   2015-04-20 11:42:00
循环尾加个cvReleaseImage(&frame1);

Links booklink

Contact Us: admin [ a t ] ucptt.com