问题描述
- 求大神寻找这段写视频代码的内存泄漏之处,菜鸟我实在找不出了
- 求大神围观~
// OpenCVFindContours.cpp : 定义控制台应用程序的入口点。//#include ""stdafx.h"" #include ""cxcore.h"" #include ""cv.h"" #include ""highgui.h"" int _tmain(int argc _TCHAR* argv[]){ CvCapture* pCapture = cvCreateCameraCapture(0); IplImage * pFrame; IplImage *psrc; IplImage *src = cvCreateImage(cvSize(700700) IPL_DEPTH_8U3); IplImage *gsrc = cvCreateImage(cvGetSize(src) IPL_DEPTH_8U1); IplImage *dsw ; IplImage *dst; CvMemStorage *storage; CvSeq *first_contour; while(1) { psrc=cvQueryFrame(pCapture ); cvResize(psrcsrc1); cvCvtColor(srcgsrcCV_BGR2GRAY); dsw = cvCreateImage(cvGetSize(src) 8 1); dst = cvCreateImage(cvGetSize(src) 8 3); storage = cvCreateMemStorage(0); first_contour = NULL; //turn the src image to a binary image //cvThreshold(src dsw 125 255 CV_THRESH_BINARY_INV); cvThreshold(gsrc dsw 100 255 CV_THRESH_BINARY); cvFindContours(dsw storage &first_contour sizeof(CvContour) CV_RETR_LIST CV_CHAIN_APPROX_SIMPLE); cvZero(dst); int cnt = 0; for(; first_contour != 0; first_contour = first_contour->h_next) { cnt++; CvScalar color = CV_RGB(rand()&255 rand()&255 rand()&255); cvDrawContours(dst first_contour color color 0 2 CV_FILLED cvPoint(0 0)); CvRect rect = cvBoundingRect(first_contour0); cvRectangle(dst cvPoint(rect.x rect.y) cvPoint(rect.x + rect.width rect.y + rect.height)CV_RGB(255 0 0) 1 8 0); } printf(""the num of contours : %dn"" cnt); cvNamedWindow( ""Source"" 1 ); cvShowImage( ""Source"" src ); cvNamedWindow( ""dsw"" 1 ); cvShowImage( ""dsw"" dsw ); cvNamedWindow( ""Components"" 1 ); cvShowImage( ""Components"" dst ); cvReleaseMemStorage(&storage); char c=cvWaitKey(10); if(c==27) break; } cvDestroyWindow(""Source""); cvDestroyWindow(""dsw""); cvDestroyWindow(""Components""); cvReleaseImage(&pFrame); cvReleaseImage(&gsrc); cvReleaseImage(&src); cvReleaseImage(&dsw); cvReleaseImage(&dst); //cvReleaseMemStorage(&storage); cvReleaseCapture(&pCapture); return 0; }
解决方案
1.建议将下面2行代码移到while循环里面最后的位置看看。
cvReleaseImage(&dsw);
cvReleaseImage(&dst);
时间: 2024-09-02 03:06:15