[英]How to extract face from an image?
我已经使用OpenCv
从背景中有其他东西的图像中成功检测出人脸。 现在,我只需要提取检测到的部分(即脸部)并将其转换为jpeg
或gif
这样的图像格式,以生成用于我的神经网络训练的脸部数据库。
我怎样才能做到这一点?
一旦检测到脸部,就会获得矩形的相对角,该矩形用于在脸部周围绘制矩形。
现在,您可以设置图像ROI(感兴趣区域),裁剪ROI并将其另存为另一张图像。
/* After detecting the rectangle points, Do as follows */
/* sets the Region of Interest
Note that the rectangle area has to be __INSIDE__ the image */
cvSetImageROI(img1, cvRect(10, 15, 150, 250));
/* create destination image
Note that cvGetSize will return the width and the height of ROI */
IplImage *img2 = cvCreateImage(cvGetSize(img1),
img1->depth,
img1->nChannels);
/* copy subimage */
cvCopy(img1, img2, NULL);
/* always reset the Region of Interest */
cvResetImageROI(img1);
上面的代码取自http://nashruddin.com/OpenCV_Region_of_Interest_(ROI )
进一步的cvSaveImage
函数可用于将图像保存到文件。
尝试这个:
for(i=0;i<(pFaceRectSeq?pFaceRectSeq->total:0);i++)
{
CvRect* r=(CvRect*)cvGetSeqElem(pFaceRectSeq,i);
int width=r->width;
int height=r->height;
cvSetImageROI(pInpImg,*r);
IplImage* pCropImg=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,3);
cvCopy(pInpImg,pCropImg,NULL);
cvShowImage("Cropped Window",pCropImg);
cvWaitKey(0);
cvResetImageROI(pInpImg);
cvReleaseImage(&pCropImg);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.