티스토리 뷰

3학년 2학기/openCV

사람의 피부 검출

Hading 2016. 11. 24. 10:19

void skin_color_processor(Mat img, Mat face) { // 각 픽셀을 읽어서 그 픽셀이 skin인지 판별

for (int i = 0; i < img.rows; i++) {

for (int j = 0; j < img.cols; j++) {


if (isskin(img.at<Vec3b>(i, j)))

face.at<uchar>(i, j) = 255; // 흑백 이미지를 만들어줌

}

}

}// 피부 이면 255를 넣는다.


bool isskin_Peer(uchar r, uchar g, uchar b) {

if (!(r > 95 && g > 40 && b > 20))

return false;

else if (!(abs(r - b) > 15 && r > g && r > b))

return false;

else {

uchar mx = max(r, g);

uchar mn = min(r, b);

if (max(mx, b) - min(mn, b) <= 15)

return false;

else return true;

}

}// 너무 파란 , 초록 얼굴이면 아니다 이런 모든 조건을 통과하면 skin이다


bool isskin(Vec3b px3) {

return isskin_Peer(px3[2], px3[1], px3[0]);

//                  R          G      B

}


위의 함수를 끼우면 실행이 된다.

기존의 img(원본사진)에다가 skin_color_processor를 덮으면 face라는 이미지가 만들어진다. 


이를 imshow("피부",face); 한다면 피부가 검출된다.

대체로 얼국 인식하는데 쓰인다.



'3학년 2학기 > openCV' 카테고리의 다른 글

background  (3) 2016.12.05
Image segmentation  (0) 2016.12.05
공간 필터링  (0) 2016.10.15
opencv 영상  (0) 2016.10.15
픽셀  (0) 2016.10.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함