개발환경
사용툴 : Visual Studio 2013 라이브러리 : openCV library 2.4.11 프로젝트 : Visual C++ console application 개발날짜 : 2015-04-09 |
출처 : Tilltue의 공부방
동영상 얼굴인식 부분 : http://kanais2.tistory.com/5
cvGet2D 함수 설명 참고 : http://everyone-has-a-blog.tistory.com/92
cvRectangle 함수 설명 참고 : 아몰라님 티스토리
Tilltue님의 소스에서 부분적으로 수정 및 추가함.
void FaceDetection::Mosaic_process(IplImage* image, Rect face) { int nCount = 0; int mb = 9; int w_point = 0, h_point = 0; int y_startpoint = 0, x_startpoint = 0; double R = 0, G= 0, B = 0;
for (int i = 0 ; i < face.height / mb ; i++) { for (int j = 0 ; j < face.width / mb ; j++) { nCount = 0; B = 0; G = 0; R = 0;
x_startpoint = face.x + (j * mb); y_startpoint = face.y + (i * mb); for (int mb_y = y_startpoint ; mb_y < y_startpoint + mb; mb_y++) { for (int mb_x = x_startpoint ; mb_x < x_startpoint + mb; mb_x++) { CvScalar color; w_point = mb_x; h_point = mb_y;
if (mb_x >= image->width) { w_point = image->width - 1; } if (mb_y >= image->height){ h_point = image->height - 1; } color = cvGet2D(image, h_point, w_point); B += color.val[0]; G += color.val[1]; R += color.val[2]; nCount++; } }
//평균을구함 B /= nCount; G /= nCount; R /= nCount; CvScalar color; color.val[0] = B; color.val[1] = G; color.val[2] = R; //cvRectangle(image, cvPoint(x_startpoint, y_startpoint), cvPoint(x_startpoint + mb, y_startpoint + mb), cvScalar(0, 0, 0, 0), 1, 8, 0); cvRectangle(image, cvPoint(x_startpoint, y_startpoint), cvPoint(x_startpoint + mb, y_startpoint + mb), color, CV_FILLED, 8, 0); } } } |
결과화면
- 녹색 테두리되어있는 것만 얼굴인식 후 모자이크 처리된 것임.
- 나머지 모자이크 처리는 제대로 얼굴인식이 되지 않아 임의로 수정한 것.
- 기본 Haar Cascade Classifier 를 사용했다보니 옆얼굴이나 기운얼굴이나 안경낀 얼굴은제대로 인식하지 못함.
'Computer Vision > Face Detection' 카테고리의 다른 글
[Face Detection] 기술 소개 (0) | 2015.04.17 |
---|---|
[Face Detection] 얼굴인식 알고리즘의 종류와 설명 (0) | 2015.04.16 |
[Face Detection] gpu를 사용한 동영상 얼굴인식 (0) | 2015.04.15 |
[Face Detection] Haar Cascade를 사용한 동영상 얼굴검출 (0) | 2015.04.08 |
[Face Detection] Haar Cascade를 사용한 이미지 얼굴검출 (3) | 2015.04.08 |