[OpenCV] 피부색 검출(손, 얼굴) 코드
OpenCV를 이용한 간단한 손, 얼굴(피부색) Skin Color 검출 코드
#include "stdafx.h"
#include "opencv/cv.h"
#include "opencv/highgui.h"
#include "opencv/cxcore.h"
#include "opencv/cvaux.h"
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
// 캡처, 윈도우 생성
CvCapture *capture = cvCaptureFromFile("1.avi");
cvNamedWindow("tt", 1);
IplImage *frame;
IplImage *resultImage;
cv::Mat m_pImage, skin, tempImage;
IplImage copy;
while (capture)
{
// 프레임 영상 받아오기
frame = cvQueryFrame(capture);
// Mat 객체로 변환
tempImg = cv::cvarrToMat(frame);
// YCrCb색상으로 변환 후 피부색 범위 설정
cv::cvtColor(tempImage, m_pImage, CV_BGR2YCrCb);
cv::inRange(m_pImage, cv::Scalar(0, 133, 77), cv::Scalar(255, 173, 127), m_pImage);
skin = (m_pImage.size(), CV_8UC3, cv::Scalar(0));
cv::add(tempImage, cv::Scalar(0), skin, m_pImage);
copy = skin;
resultImage = ©
// 결과 영상 출력
cvShowImage("tt", resultImage);
if (cvWaitKey(33) == 27) break;
}
// 메모리 해제
cvReleaseImage(&frame);
cvReleaseImage(&resultImage);
cvReleaseCapture(&capture);
cvDestroyWindow("tt");
return 0;
}