我已经在c++中做了一些opencv编码,我能够使用Haar Cascades来检测面部和眼睛,但现在我被困在如何获得瞳孔坐标,并凝视知道用户在屏幕上看的地方,有什么想法吗?
这个问题很宽泛。请从关键字开始,如凝视跟踪,头部姿势估计,瞳孔检测在谷歌。本文可能会有所帮助,这里有一个运行时示例。
您可以通过将椭圆或圆形拟合到渐变图像中来检测瞳孔。如果数据噪声太大,可以从HoughCircles()开始。
接下来,你必须决定如何检测凝视的方向(凝视=头部姿势+眼睛姿势)。让我们专注于眼睛姿势。一种方法是测量从眼中心到瞳孔的二维矢量。位移应该给你方向,但这需要检测眼球的中心。这可能可以通过检测眼角和运行某种校准程序来完成。在任何情况下,你的图像的分辨率应该是相当好的做到这一点。既然你检测到一张脸,我猜落入瞳孔的像素数量是相当小的。
我建议你使用基于图像梯度的眼中心定位算法。
Tristan Hume在OpenCV中的实现可以在这里获得- http://thume.ca/projects/2012/11/04/simple-accurate-eye-center-tracking-in-opencv/
就凝视而言,没有"氪石"仍然是一个积极研究的领域。