Mac上的脸部跟踪软件(内置摄像头)
我想要一种方式来跟踪用户在一段时间内看着屏幕。Mac上的脸部跟踪软件(内置摄像头)
E.g.在正常使用中,用户在屏幕上看到的确切时间是几秒钟。
我想知道哪些创新想法或预先存在的软件会允许我这样做。
因此,更详细的方式,我看到它是会有一些容忍度例如距屏幕的距离,头与屏幕的角度,这将被视为与显示器“接合”。如果使用mac book pro中的相机进行跟踪,那么它将在文本文件/键值存储中记录程序打开时每秒钟的时间戳和布尔值。
任何有这种事情的任何经验?
Face.com有一个解决方案来重新面对面部。那么只需抓住相机输入并将其发送到他们的服务器,我猜?
似乎建议它只接受照片而不是视频。现在我意识到视频只是一系列照片,但看起来可能需要很多工作,以便随着时间消除,并发送到API以获得结果。 –
在OpenCV中有实现(并且已经用标记进行过训练)的facetrackers。我建议你先开始跟踪面孔。一旦你有一个强大的facetracker,并且你可以产生告诉多长时间一张脸一直在看屏幕,等等。
以后你可以添加改进。一旦检测到人脸,您可以尝试识别分析人脸像素的人。
另一条线是识别部分的脸,像嘴巴,眼睛,鼻子,眉毛......
如果你能追踪脸和脸的组成部分,你可以尝试识别面部表情模式,如快乐,悲伤等。
我已经建立了一个人脸检测系统来做这样的事情,一旦使用OpenCV,你可以看到结果here。
我那时使用的方法是haarTraining与OpenCV分类器中内置的标准的两个单独使用。我使用名为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
}
不幸的是,这似乎没有为Mac准备好。当然可以在iOS上工作,但理想情况下我想避免这种情况。 –
但它看起来确切地记录我需要什么。 –
您可以查看您需要的代码。它的代码有点混乱(一种Frankenstein软件),但应该与iOS一起工作。 –