矩形放大到源图像重新检测

	//放大图像,在周围检测人体
			int x = m_trajectories[i].object->particles[0].x;
			int y = m_trajectories[i].object->particles[0].y;
			int w = cvRound(m_trajectories[i].object->particles[0].width*f_scale);//f_scale矩形膨胀系数
			int h = cvRound(m_trajectories[i].object->particles[0].height*f_scale);

			int x1 = std::max(x-w/2,0);
			int y1 = std::max(y-h/2,0);
			int x2 = std::min(x+w/2,frameSrc->width);
			int y2 = std::min(y+h/2,frameSrc->height);
			w = (x2-x1)*scale;//scale图像缩放系数
			h = (y2-y1)*scale;
			x = x1*scale;
			y = y1*scale;

			imageDet = cvCreateImage(cvSize(w,h),8,1);
			cvSetImageROI(frameSrc,cvRect(x,y,w,h));
			cvCopy(frameSrc,imageDet); 
			cvResetImageROI(frameSrc);
			vector<Rect> found;
 			people_dectect_hog.detectMultiScale(imageDet, found, 0, Size(8, 8), Size(32, 32), 1.05, 2);//行人检测
			if (found.size()!=0)
			{
				for(int j = 0; j <found.size(); j++)
				{
					Rect r = found[0];
					r.x = cvRound((r.x+r.width*0.1+x)/scale);//+x-w;
					r.width = cvRound((r.width*0.8)/scale);
					r.y = cvRound((r.y+r.height*0.07+y)/scale);//+y-h;
					r.height = cvRound((r.height*0.8)/scale);
					cvRectangle(frameHSV, r.tl(), r.br(), Scalar(0, 255, 0), 2);
				}
				cvWaitKey(10);
				cvShowImage("image",frameHSV);
				cvWaitKey(0);
			}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值