使用opencv的人脸分类器,在人脸的位置上覆盖一张图片,程序能运行,但是运行一段时间后就出现了下图错误

出现这种错误是由于什么原因引起的???这个程序我的目的是在人脸的位置上覆盖一张图片,并且图片能随人脸区域的大小及位置变化而变化,是用了cvCopy函数把图片覆盖到人脸区域... 出现这种错误是由于什么原因引起的???
这个程序我的目的是在人脸的位置上覆盖一张图片,并且图片能随人脸区域的大小及位置变化而变化,是用了cvCopy函数把图片覆盖到人脸区域上
这是主要的代码
CvCapture *capture=cvCreateCameraCapture(CV_CAP_ANY);//从摄像机中获取图像 IplImage *frame; while(1) { bool first=true; frame=cvQueryFrame(capture); if(!frame) break; else { if(first)//初次循环,做些初始化 { first=false; dst_gray=cvCreateImage(cvGetSize(frame),frame->depth,1);//灰度图 cvCvtColor(frame,dst_gray,CV_BGR2GRAY);//得到灰度图 //这是canny边缘监测 canny=cvCreateImage(cvGetSize(dst_gray),IPL_DEPTH_8U,1); } cvCanny(frame,canny,100,200,3); faces = cvHaarDetectObjects(dst_gray,cascade, storage,1.1, 2, 0 ,cvSize(30,30));
for(short i=0;i<(faces?faces->total:0);i++) { //得到人脸的区域 CvRect* rect = (CvRect*)cvGetSeqElem(faces,i); //在人脸区域画个矩形 CvScalar color={{255,0,0}}; //画矩形的颜色 CvPoint ltp;//矩形左上角的点坐标 CvPoint rbp;//矩形右下角的点的坐标 ltp.x=rect->x; ltp.y=rect->y; rbp.x=rect->x+rect->width; rbp.y=rect->y+rect->height; //cvRectangle(frame,ltp,rbp,color,3,8,0); //把一张图片复制到人脸区域 IplImage * img1 = cvLoadImage("F:\\杂\\123.png",1);//被复制的图像 if(img1==NULL) { cout<<"无法载入图片,程序结束"<<endl; exit(0); } int d=frame->depth;//深度 int n=frame->nChannels;//通道数 IplImage *img3;//创建用于过渡的图片 double bili1=(1.0*(rbp.x-ltp.x))/(img1->width);//宽的缩放比例 double bili2=(1.0*(rbp.y-ltp.y))/(img1->height);//高的缩放比例 CvSize size;//img3的图片尺寸 size.width=(int)img1->width*bili1; size.height=(int)img1->height*bili2; img3=cvCreateImage(size,d,n); cvResize(img1,img3,CV_INTER_LINEAR); CvRect roi3=cvRect(0,0,size.width,size.height); cvSetImageROI(img3,roi3);//把img3的感兴趣区域设为全图 CvRect roif=cvRect(ltp.x,ltp.y,(rbp.x-ltp.x),rbp.y-ltp.y);//在frame上设置感兴趣区域,就是矩形框的区域 cvSetImageROI(frame,roif); cvCopy(img3,frame); cvResetImageROI(frame); cvResetImageROI(img3); cvReleaseImage(&img3); } } cvShowImage("camera",frame);
展开
 我来答
百度网友e8ce36093d
2015-04-07 · TA获得超过213个赞
知道小有建树答主
回答量:60
采纳率:0%
帮助的人:72.8万
展开全部
每一次frame指向一个新的图像,但是没有释放。reset后继续指向了下一张图片。
时间久了,内存耗尽。。。
追问
我在循环的最后把frame和其他用到的图片都给release掉,但是还是出现了上面的情况,这是为什么啊
苏州千视通视觉科技股份有限公司_
2024-11-04 广告
千视通是国内第一梯队推出多模态AI大模型网关和边缘大模型一体机产品方案的领先AI企业。 拥有行业领先的多模态视觉语言大模型技术,践行“Make high-quality AI quickly”理念,平台基于多模态预训练,支持用户自定义算法可... 点击进入详情页
本回答由苏州千视通视觉科技股份有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式