gpt4 book ai didi

c++ - 打开简历。从网络摄像头的实时馈送中复制或裁剪图像,没有内存泄漏

转载 作者:太空宇宙 更新时间:2023-11-03 22:30:07 24 4
gpt4 key购买 nike

我正在尝试找到一种方法来避免在 while 循环中使用 cvCreateImage,因为我意识到这会导致内存泄漏

我想要类似 this 的东西- 尽管没有内存泄漏。


我不知道为什么这段代码不起作用。

下面的代码是我认为可行的,但在运行时会中断。

if((capture = cvCreateCameraCapture(0)) == NULL) {
printf("connect cam first\n");
return -1;
}
IplImage *detecImg = cvCreateImage( cvSize(WIDTH, HEIGHT), 8, 1 );
IplImage *frameImage = NULL;
IplImage *notImage = NULL;
while(1){
cvWaitKey(1);
cvSplit(frameImage, a, b, c, NULL);
//detect objec from a,b,c.....output is "detecImg"
cvSetImageROI(detectImg, Roi); //Roi is changing depends on detection result
notImage=cvCloneImage(detectImg);//cvCloneImage,cvCopy not working...
cvNot(notImage, notImage);
copyNotImg = cvCloneImage(notImage);

... continues ...

}

如果我在下面使用这段代码,它可以正常工作,但会泄漏一点内存。

if((capture = cvCreateCameraCapture(0)) == NULL) {
printf("connect cam first\n");
return -1;
}
IplImage *detecImg = cvCreateImage(cvSize(WIDTH, HEIGHT), 8, 1);
IplImage *frameImage = NULL;
IplImage *notImage = NULL;
while(1){
cvWaitKey(1);
cvSplit(frameImage, a, b, c, NULL);
//detect objec from a,b,c.....output is "detecImg"
cvSetImageROI( detectImg, Roi); //Roi is changing depends on detection result
notImage=cvCreateImage( cvSize(Roi.width, Roi.height), 8, 1 );
cvNot(notImage, notImage);
copyNotImg= cvCloneImage(notImage);

... continues ...
}

如有任何见解,我们将不胜感激。

最佳答案

任何用 cvCreateImage 分配的图像都需要用 cvReleaseImage 释放。你要发布所有图片吗?

或者,您可以使用现代 C++ OpenCV api 为您处理所有内存分配和释放。

关于c++ - 打开简历。从网络摄像头的实时馈送中复制或裁剪图像,没有内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27893998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com