使用C ++和Opencv注视点/区域

时间:2014-08-11 11:11:47

标签: c++ opencv computer-vision eye-tracking

我使用OpenCV制作了一个C ++程序,允许使用我的网络摄像头识别我的脸和眼睛。然后,我想确定我的学生的中心,然后确定我的屏幕上的注视点或区域。有谁知道怎么做?请不要我的程序使用简单的计算机网络摄像头。 提前感谢您的建议。

2 个答案:

答案 0 :(得分:3)

我认为我的Optimeyes项目在这里:

https://github.com/LukeAllen/optimeyes

做你想要的:瞳孔检测和凝视跟踪。其中包括“理论论文”pdf讨论了操作原理,并参考了其他论文。该项目是使用Python版本的OpenCV编写的,但欢迎您将其移植到C ++!

答案 1 :(得分:1)

如果您要在笔记本电脑屏幕上识别凝视点。然后,下面是您可以使用的方法:

  1. 使用shape_predictor_68_face_landmarks.dat,获取眼睛界标(每只眼睛六个点)

  2. 根据眼睛界标计算眼睛中心(Ex,Ey)

  3. 如果您可以从上述答案或HCT中获得虹膜中心(Ix,Iy)

  4. 计算比例因子:W(eye)= Topleftcorner(x)-Toprightcorner(x)

H(眼睛)=左上角(x)-右上角(x)

  1. 比例因子R(x)= W(屏幕)/ W(眼睛) R(y)= H(屏幕)/ H(眼睛)

  2. POG(x)=(W(屏幕)/ 2)+(R(x)* r(x)) POG(y)=(H(屏幕)/ 2)+(R(y)* r(y))

r(x)和r(y)表示虹膜距眼中心的距离,计算方法如下:

r(x)= COI(x)-COE(x)

,r(y)= COI(y)-COE(x)

希望这会有所帮助!