opencv 内存泄漏问题

最近修改darknet源码,使程序可以打印出每类的目标小图,调用了opencv的函数,出现内存泄漏问题。

IplImage *disp = cvCreateImage(cvSize(m_img.w, m_img.h), IPL_DEPTH_8U, m_img.c);//这一块指针需要释放
        
int step = disp->widthStep;
for (y = 0; y < m_img.h; ++y) {
	for (x = 0; x < m_img.w; ++x) {
		for (k = 0; k < m_img.c; ++k) {
			disp->imageData[y*step + x*m_img.c + k] = (unsigned char)(get_pixel(copy, x, y, k) * 255);
			}
		}
	}
CvMat *pMat = cvCreateMatHeader(m_img.w, m_img.h, IPL_DEPTH_8U);
CvRect rect = cvRect(px, py, pw, ph);
cvGetSubRect(disp, pMat, rect);
IplImage *pSubImg = cvCreateImage(cvSize(pw, ph), IPL_DEPTH_8U, m_img.c);//这一块后面使用了cvGetImage函数,导致刚才分配的图像数据区指针丢失,现在是imgMat数据区的指针,IMAGE_WIDTH*IMAGE_HEIGHT图像的数据区的图像数据区指针已丢失,当然无法释放
        
cvGetImage(pMat, pSubImg);//
vSaveImage(buff, pSubImg, 0);	
free_image(copy);
cvReleaseImage(&disp);//释放内存

猜你喜欢

转载自blog.csdn.net/weixin_41066529/article/details/89349161