티스토리 뷰


얼굴을 검출하는 방법은 많다. 지금 포스팅 된 글은 얼굴 정면을 기계학습시킨 xml을 활용해서 만든 자료이다.

약간만 틀어저도 얼굴로 인식을 안한다는.....( 이 xml은 인터넷에 많이 있으니 참고하길... )


#include "cv.h"
#include "highgui.h"

int main()
{
	int i;
	CvHaarClassifierCascade *cascade;
	// face sequence will reside in the storage
	CvMemStorage *storage;
	IplImage *image;
	CvSeq *faces; 
	const char *classifer = "haarcascade_frontalface_alt.xml";
	
	// load classfier cascade from XML file
	cascade = (CvHaarClassifierCascade*) cvLoad(classifer, 0, 0, 0 );
	
	// load image
	image = cvLoadImage("face.jpg", 1); 

	// createStorage
	storage = cvCreateMemStorage(0);

	// check Error
	if(!cascade || !storage || !image){
		printf("error!");
		return -1;
	} 
	  
	faces = cvHaarDetectObjects(image, cascade, storage, 1.2, 2, CV_HAAR_DO_CANNY_PRUNING, cvSize(0, 0));
  
	// for each face draw the bounding rectangle
	for(i = 0; i < (faces ? faces->total : 0); i++) {
		CvRect *r = (CvRect*)cvGetSeqElem(faces, i);
		CvPoint pt1 = { r->x, r->y }; 
		CvPoint pt2 = { r->x + r->width,
			r->y + r->height };
		cvRectangle(image, pt1, pt2, CV_RGB(255, 0, 0), 3, 8, 0);
	} 
	 
	cvShowImage("Face Detection Test", image);  // show image
	cvWaitKey(0); // wait
	 
	// release data
	cvReleaseImage(&image);
	cvReleaseHaarClassifierCascade(&cascade);
	cvReleaseMemStorage(&storage);

	return 0;
}  

위 코드는 기계학습 시킨 데이터를 이미지에 비교하여, 네모를 처주는 예제이다.

cvWaitKey(0); 이 함수는 0인 경우, 무한대기하고, 그 외 값에 대해서는 기입된 시간까지 대기 후 창이 종료된다. image와 xml은 현재 프로젝트에 같이 들어있기 때문에 경로를 적어주지 않았다.

 openCV를 처음 접해보는데, 많이 공부해서 더 좋은 글도 올려야겠다...

'Language > Computer Vision' 카테고리의 다른 글

[영상처리] 이미지, xml 저장하기  (0) 2014.02.10
[영상처리] YCbCr 입 검출  (1) 2014.01.09
[영상처리] YCbCr 손 검출  (0) 2014.01.02
[영상처리] ROI이용해서 관심영역 수정  (5) 2013.12.17
[OpenCV] 설치  (0) 2013.10.24
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday