Use*_*482 2 c++ opencv computer-vision eye-tracking
我使用 OpenCV 编写了一个 C++ 程序,允许使用我的网络摄像头来识别我的脸和眼睛。然后我想确定我的瞳孔中心,然后确定屏幕上的注视点或区域。有人知道该怎么做吗?请不要我的程序使用简单的计算机网络摄像头。预先感谢您的建议。
我认为我的 Optimeyes 项目在这里:
https://github.com/LukeAllen/optimeyes
做你正在寻找的事情:瞳孔检测和凝视跟踪。其中包含的“理论论文”pdf 讨论了操作原理,并引用了其他论文。该项目是使用 Python 版本的 OpenCV 编写的,但欢迎您将其移植到 C++!
如果您想识别笔记本电脑屏幕上的注视点。那么您可以使用以下方法:
使用shape_predictor_68_face_landmarks.dat,获取眼睛标志(每只眼睛六个点)
根据眼睛标志计算眼睛中心 (Ex, Ey)
如果您可以从上面的答案或从 HCT 获得虹膜中心(Ix,Iy)
计算缩放因子:W(eye) = Topleftcorner(x) - Toprightcorner(x)
H(眼睛) = 左上角(x) - 右上角(x)
缩放系数 R(x) = W(屏幕)/W(眼睛) R(y) = H(屏幕)/H(眼睛)
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)
希望这可以帮助!!