基于Boost方法的人脸检测(2):样本生成(切割图像、resize图像、灰度化图像、保存图片)




infile >> faceCount;
		cout << faceCount << endl;
		for (int i = 1; i <= faceCount; i++)
		{
			infile >> h >> w >> angle >> x >> y >> one;
			//cout << h << "**" << w << "**" << angle << "**" << x << "**" << y << "**" << one << "**" << endl;			
			getline(infile, other);
			//cout << other << "**" << endl;
			if (i > 3) //do not replace this code to for, we need step over other faces' data lines
			{
				continue; //each image extract at most 3 faces, other faces are not well defined
			}

			//cut image: http://blog.csdn.net/superjimmy/article/details/6216316
			IplImage* srcImg = cvCloneImage(&(IplImage)image);
			w = w*1.5; h = h*1.5; //because w and h a little small
			x = (x - w / 2.0) < 0 ? 0 : (x - w / 2.0);
			y = (y - h / 2.0) < 0 ? 0 : (y - h / 2.0);
			//cout << x << "**" << y << endl;
			w = (x + w) > srcImg->width ? (srcImg->width - x) : w;
			h = (y + h) > srcImg->height ? (srcImg->height - y) : h;
			//cout << w << "**" << h << endl;
			Rect rect(x, y, w, h);
			cvSetImageROI(srcImg, rect);
			IplImage* desImg = cvCreateImage(cvSize(w, h), srcImg->depth, srcImg->nChannels);
			cvCopy(srcImg, desImg, 0);
			cvResetImageROI(srcImg);
			//cvShowImage("FaceDection", desImg); waitKey(0);

			//resize: http://blog.csdn.net/chinabinlang/article/details/40984177
			IplImage* resizedImg = cvCreateImage(cvSize(25, 25), IPL_DEPTH_8U, 1);
			cvResize(desImg, resizedImg, CV_INTER_LINEAR);
			stringstream iStr; iStr << i;
			cvSaveImage(("PositiveExample/" + saveName + "_" + iStr.str() + ".jpg").c_str(), resizedImg);


			//negative example generation
			Rect rect2(0, (i - 1) * 25, 25, 25);
			cvSetImageROI(srcImg, rect2);
			desImg = cvCreateImage(cvSize(25, 25), IPL_DEPTH_8U, 1);
			cvCopy(srcImg, desImg, 0);
			cvResetImageROI(srcImg);
			cvSaveImage(("NegativeExample/" + saveName + "_" + iStr.str() + ".jpg").c_str(), desImg);
		}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值