2012-05-29 8 views
6

Chcę, aby śledzić użytkownika, który patrzy na ekran z czasem.Oprogramowanie do śledzenia twarzy na komputerze Mac (w kamerze)

E.g. w normalnym użytkowaniu, co dokładnie sekundy w ciągu dnia użytkownik patrzył na ekran.

Zastanawiam się, jakie innowacyjne pomysły lub wcześniej istniejące oprogramowanie pozwoliłyby mi to zrobić.

Aby uzyskać więcej szczegółów, widzę pewne poziomy tolerancji, np. odległość od ekranu, kąt głowy do ekranu, który byłby uważany za "włączony" z monitorem. Jeśli w aparacie powiedziano, że macbook pro był używany do śledzenia tego, to zapisałby w pliku tekstowym/wartości klucza zapisywanie znacznika czasu i wartości boolowskiej dla każdej sekundy czasu włączenia programu.

Ktoś ma jakieś doświadczenie w tego typu sprawach?

Odpowiedz

6

Można znaleźć dobry punkt wyjścia tutaj: http://code.google.com/p/ehci/

Jest to oprogramowanie oparte na OpenCV, który śledzi głowę i wykryć jego orientację. To jest opensource.

+0

Niestety, nie wydaje się być gotowy do mac. Z pewnością mógłbym zacząć pracować z systemem iOS, ale najlepiej chciałbym tego uniknąć. –

+0

, ale wygląda na to, że rejestruje dokładnie to, czego potrzebuję. –

+0

Możesz zajrzeć do kodu, aby znaleźć to, czego potrzebujesz. Kod jest nieco zagmatwany (rodzaj oprogramowania Frankenstein), ale powinien działać z iOS przy niewielkiej ilości pracy. –

1

Face.com ma rozwiązanie do regonowania twarzy. Więc po prostu chwyć wejście kamery i wyślij je na swoje serwery?

+2

Wydaje się sugerować, że akceptuje tylko zdjęcia, a nie wideo. Teraz zdaję sobie sprawę, że wideo to tylko sekwencja zdjęć, ale wygląda na to, że może być dużo pracy, aby usunąć to z czasem i wysłać tam API, aby uzyskać wyniki. –

3

Wprowadzono facittackery (i już przeszkolone ze znacznikami), na przykład w OpenCV. Proponuję, abyś najpierw zaczął od śledzenia twarzy. Po uzyskaniu solidnego facetrackera możesz wygenerować dane wyjściowe informujące o tym, jak długo twarz patrzy na ekran itp.

Później możesz dodać ulepszenia. Po wykryciu twarzy możesz spróbować rozpoznać osoby analizujące piksele na twarzy.

Kolejna linia jest rozpoznanie części twarzy, jak usta, oczy, nos, brwi ...

Jeśli można śledzić twarz i części twarzy, można spróbować rozpoznać twarzy wzory ekspresji, jak szczęście, smutek, itp.

1

Zbudowałem system wykrywania twarzy, aby zrobić coś takiego raz przy użyciu OpenCV, można zobaczyć wynik here.

Metodą, którą wówczas stosowałem, były dwa osobne zastosowania haarTraining ze standardowym wbudowanym klasyfikatorem OpenCV. Użyłem klasyfikatora o nazwie haarcascade_frontalface_default.xml, aby sprawdzić, czy użytkownik ogląda ekran i haarcascade_profileface.xml, aby sprawdzić, czy użytkownik nie patrzy. Poniższy kod powinien zacząć korzystać z openCV i 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 
} 
Powiązane problemy