OpenCv
을 사용하여 배경에있는 다른 것들이있는 이미지에서 얼굴을 성공적으로 감지했습니다. 이제 감지 된 부분 (즉, 얼굴) 만 추출하여 jpeg
또는 gif
과 같은 이미지 형식으로 변환하여 신경 네트워크 학습에 사용할 얼굴 데이터베이스를 만들어야합니다.이미지에서 얼굴을 추출하는 방법은 무엇입니까?
어떻게하면됩니까?
OpenCv
을 사용하여 배경에있는 다른 것들이있는 이미지에서 얼굴을 성공적으로 감지했습니다. 이제 감지 된 부분 (즉, 얼굴) 만 추출하여 jpeg
또는 gif
과 같은 이미지 형식으로 변환하여 신경 네트워크 학습에 사용할 얼굴 데이터베이스를 만들어야합니다.이미지에서 얼굴을 추출하는 방법은 무엇입니까?
어떻게하면됩니까?
얼굴을 감지하면 직사각형의 대각선이 생겨 얼굴 주위에 직사각형을 그립니다.
이제 이미지 ROI (Region of Interest)를 설정하고 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);
는
또한 cvSaveImage
기능이 파일에 이미지를 저장하는 데 사용할 수 있습니다) http://nashruddin.com/OpenCV_Region_of_Interest_(ROI에서 가져옵니다.
@ arkiaz - 이미 감지 이미지를 laoded했습니다. 탐지 후 다시 cvLoadImage를 작성해야합니까? 아니면 감지 된 Rectangle 이후 코드의 cvSetImageROI 부분을 계속 사용해야합니까? –
오, 미안합니다. 이미지를 다시로드 할 필요가 없습니다. 코드를 완전히 복사했습니다. 직사각형을 검출 한 후에 만 cvSetImageROI로부터 시작합니다. –
cvRect (1015150250)가 나타내는 것은 무엇입니까? 사각형 x, y 너비 및 높이를 의미합니까? –
이 시도 : 충분히 귀하의 질문에 대답하는 경우
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);
}
하는 답변을 받아주십시오! – eipxen