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 = &copy;

 

// 결과 영상 출력

cvShowImage("tt", resultImage);

 

if (cvWaitKey(33) == 27) break;

}

 

// 메모리 해제

cvReleaseImage(&frame);

cvReleaseImage(&resultImage);

cvReleaseCapture(&capture);

cvDestroyWindow("tt");

 

return 0;

}

+ Recent posts