如何使用Open CV检测哈欠

时间:2012-06-10 06:24:31

标签: ios opencv haar-wavelet

我正在开发一个iOS应用程序,需要检测用户何时打哈欠。

我所做的是包括Open CV并使用haar级联找到面孔,然后在面部内找到嘴巴(也使用haarcascade)。

我遇到的麻烦是,我相信能够像处理(face.y - mouth.y)这样的事情来检测哈欠是如此容易。某事=哈欠。

但我遇到的问题是面部和嘴部的面积是“不稳定的”,我的意思是每次循环运行时,面部和嘴部的X和Y值都是(显然)不一样。 / p>

我可以使用任何“张开嘴”的哈尔级联,或者我怎么知道用户何时张开嘴?

2 个答案:

答案 0 :(得分:11)

作为一般情况,支持向量机(SVM)用于面部表情识别,如愤怒,微笑,惊喜等仍在进行积极开发的情况。谷歌搜索给你提供了很多关于这个主题的论文,(甚至我的一个同学做了这个作为他的最后一年项目)。为此,首先您需要训练SVM并且要做到这一点,您需要打哈欠和正常面部的样本图像。

打呵欠几乎与惊喜相似,两个案件都张嘴。我建议您查看以下论文的第3页:Real Time Facial Expression Recognition in Video using Support Vector Machines(如果您无法访问该链接,请按纸质名称进行google)

该论文(甚至我的同学)使用面部特征的位移矢量。为此,您可以在脸上找到一些特征点。例如,在论文中,他们使用了眼睛瞳孔,极端点的眼睑,鼻尖,极端的口腔区域(嘴唇)等。然后他们不断追踪特征的位置并找到欧几里德他们之间的距离。它们用于训练SVM。

请查看以下两篇论文:

Feature Points Extraction from Faces

Fully Automatic Facial Feature Point Detection Using Gabor Feature Based Boosted Classifiers

在下面看一下我脸部特征点的含义:

enter image description here

在你的情况下,我认为你是在iPhone上实时实现的。所以可能你可以避开眼睛的特征点(虽然不是一个好主意,因为当你打哈欠时,眼睛的大小会变小)。但与之相比,嘴唇上的特征点显示出更多变化和优势。因此,单独实施唇部可以节省时间。 (嗯,一切都取决于你)。

唇部分割:已在SOF中讨论并查看此问题:OpenCV Lip Segmentation

最后,我相信你可以在google上找到很多细节,因为它是一个活跃的开发领域,很多论文都在那里。

另一个选项

我已经多次听过这个地区的另一个选择是Active Appearance Model。但我对此一无所知。谷歌吧。

答案 1 :(得分:0)

OpenCV还具有面部识别/检测功能(请参阅openCV SDK附带的示例)。我认为这些是一个更好看的地方,因为haar cascade并没有真正按照你需要的方式分析面部表情。尝试运行示例并亲自查看 - 您将获得有关检测到的眼睛/嘴巴等的实时数据。

祝你好运