2012-05-29 3 views
6

시간이 지남에 따라 화면을 보는 사용자를 추적하고 싶습니다.Mac의 얼굴 추적 소프트웨어 (카메라 제작)

예. 정상적인 사용에서 사용자가 화면을 보았던 정확한 초를 말합니다.

나는 혁신적인 아이디어 나 기존 소프트웨어로 어떤 것을 할 수 있는지 궁금합니다.

자세한 내용은 내가보기에 몇 가지 허용 수준이있을 것입니다. 스크린과의 거리, 모니터와 "맞물린"것으로 간주 될 수있는 헤드 각도. 카메라가 맥북 프로가 이것을 추적하는 데 사용 되었다면, 프로그램이 켜진 시간의 초당 타임 스탬프와 부울 값을 텍스트 파일/키 값 저장에 기록합니다.

누구나 이런 종류의 경험이 있습니까?

답변

6

당신은 여기에 좋은 출발점을 찾을 수 있습니다 http://code.google.com/p/ehci/

그것은 머리를 추적하고 방향을 감지 OpenCV의 기반으로하는 소프트웨어입니다. 그것은 opensource입니다.

+0

불행히도, 이것은 Mac에 대한 준비가되지 않은 것으로 보입니다. 물론 iOS에서 작동하도록 할 수는 있지만 이상적으로는 이것을 피하고 싶습니다. –

+0

하지만 내가 필요한 것을 정확히 기록하려고합니다. –

+0

필요한 코드를 살펴볼 수 있습니다. 이 코드는 다소 혼란 스럽지만 (일종의 프랑켄슈타인 소프트웨어) 약간의 작업으로 iOS에서 작동해야합니다. –

1

Face.com에는 페이스를 재조정 할 수있는 솔루션이 있습니다. 그냥 카메라 입력을 잡고 서버에 보냅니다. 맞습니까?

+2

동영상과 반대되는 사진 만 허용한다고 생각됩니다. 이제 동영상은 단지 일련의 사진 일 뿐이지 만 시간이 지남에 따라이를 제거하고 결과를 얻기 위해 API를 보낼 수있는 것처럼 보일 것 같습니다. –

3

예를 들어 OpenCV와 같이 구현 된 (그리고 이미 마커로 훈련 된) 파편 탐지기가 있습니다. 먼저 얼굴 추적 만하면됩니다. 일단 강력한 패싯 추적기가 있고 얼굴이 화면을 얼마나 오랫동안보고 있었는지 알려주는 출력을 생성 할 수 있습니다.

나중에 개선 사항을 추가 할 수 있습니다. 얼굴을 감지하면 얼굴 픽셀을 분석하는 사람들을 인식 할 수 있습니다.

또 다른 라인처럼 ... 입, 눈, 코, 눈썹처럼 얼굴 부분을 인식하는 당신이 얼굴과 얼굴의 일부를 추적 할 수있는 경우

, 당신은 표정의 패턴을 인식하기 위해 시도 할 수있다 행복, 슬픔 등.

1

OpenCV를 사용하여 한 번 이런 식으로 얼굴을 감지하는 시스템을 만들었으므로 결과는 here입니다.

내가 사용한 방법은 OpenCV 분류기에 내장 된 표준을 사용하여 haarTraining을 두 번 사용하는 것입니다. haarcascade_frontalface_default.xml이라는 분류자를 사용하여 사용자가 화면을보고 있는지 확인하고 haarcascade_profileface.xml을 사용하여 사용자가 멀리보고 있는지 확인합니다. 다음 코드는 openCV 및 C++을 사용하여 시작하도록합니다.

CvHaarClassifierCascade *cascade_face; 
CvMemStorage   *storage_face; 
CvHaarClassifierCascade *cascade_profile; 
CvMemStorage   *storage_profile; 

//profile face 
storage_profile = cvCreateMemStorage(0); 
cascade_profile = (CvHaarClassifierCascade*)cvLoad("haarcascade_profileface.xml", 0, 0, 0); 
cvHaarDetectObjects(frm, cascade_profile, storage_profile, 1.1, 2, CV_HAAR_DO_CANNY_PRUNING); 

//frontal face 
storage_face = cvCreateMemStorage(0); 
cascade_face = (CvHaarClassifierCascade*)cvLoad("haarcascade_frontalface_default.xml", 0, 0, 0); 
cvHaarDetectObjects(frm, cascade_face, storage_face, 1.1, 2, CV_HAAR_DO_CANNY_PRUNING); 

//detect profiles 
CvSeq *profile = cvHaarDetectObjects(img,cascade_profile, storage_profile, 1.1,3,0,cvSize(20, 20)); 

for(i = 0 ; i < (profile ? profile->total : 0) ; i++) { 
    CvRect *r = (CvRect*)cvGetSeqElem(profile, i); 
    //draw rectangle here, or do other stuff 
} 

//detect front 
CvSeq *faces = cvHaarDetectObjects(img,cascade_face, storage_face, 1.1,3,0,cvSize(20,20)); 

for(i = 0 ; i < (faces ? faces->total : 0) ; i++) { 
    CvRect *r = (CvRect*)cvGetSeqElem(faces, i); 
    //draw rectangle here, or do other stuff 
} 
관련 문제