티스토리 뷰
얼굴을 검출하는 방법은 많다. 지금 포스팅 된 글은 얼굴 정면을 기계학습시킨 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