我使用他们的维基上提供的文档尝试使用OpenCV进行人脸识别。它工作正常,可以检测多个面孔。但是,该网站上没有提供有关3D物体检测或头部跟踪的数据。代码和维基的链接如下:
虽然wiki确实提供了有关人脸检测的足够信息,但您可能已经发现,但未提供3D人脸识别方法。
我想了解与3D人脸识别和跟踪相关的项目,这样我就可以看到源代码,并尝试让项目做同样的事情。
答案 0 :(得分:6)
这可能会迟到但柳树车库还有另一个名为Point Cloud Library(PCL)的项目,该项目完全专注于3D数据处理任务。面部识别是他们用于宣传项目的用例之一。当然所有这些都是免费的......
答案 1 :(得分:1)
有很多方法。我只能指出你正确的方向。面部识别示例通常提供眼睛的子检测。所以实际上你知道面部和眼睛的位置。在类似或其他方式中,您也可以检测嘴唇。 现在,当你有至少三个物体点(面对这个时间)时,你可以使用三角测量计算它在室内的3D位置。这部分示例存在于find_obj.cpp中,它以OpenCV为例。这个例子只使用SURF的x点,并根据这些信息绘制矩形。使用CvFindHomography查看其他任何内容。
答案 2 :(得分:1)
自OpenCV 2.4.2以来,有一个用于人脸检测和跟踪的头文件:opencv2 / contrib / detection_based_tracker.hpp
头文件定义了一个名为DetectionBasedTracker的类。它定义的跟踪机制在后台使用haar级联来检测对象。跟踪比OpenCV Haar实现快得多(但有些人发现它不太准确)。 我个人发现它在Android设备上运行得很好。可以在此处找到一些实现面部检测和跟踪器的示例代码: http://bytesandlogics.wordpress.com/2012/08/23/detectionbasedtracker-opencv-implementation/
答案 3 :(得分:1)
您应该查看适用于您所描述任务的Active shapes models和Active Appearance Models。 OpenCV仅为您提供2D检测方法,而参考方法(现在在该领域非常流行)跟踪分布在脸上的一组3D点以及描述其外观的纹理。
维基百科页面将为您提供一些指向这些方法的实现的链接。
如果你想知道世界坐标中头部的3D参数(例如凝视检测),那么你应该谷歌搜索关键词“3D头部跟踪”和“头部姿势估计”。