我使用 OpenCV 制作了一个 C++ 程序,以允许使用我的网络摄像头来识别我的脸和眼睛。然后我想确定我瞳孔的中心,然后确定我屏幕上的注视点或区域。有人知道该怎么做吗?请不要我的程序使用简单的计算机网络摄像头。预先感谢您的建议。
2 回答
我认为我的 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(screen)/W(eye) R(y) = H(Screen)/H(eye)
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)
希望这可以帮助!!