【问题标题】:Point/Area of gaze with C++ and Opencv使用 C++ 和 Opencv 的注视点/区域
【发布时间】:2014-10-04 04:46:31
【问题描述】:

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

【问题讨论】:

  • 您可能可以找到您正在看的方向(通过计算从眼睛中心到瞳孔位置的矢量并沿着该矢量跟随),至于精确的点,即没那么容易。
  • 瞳孔检测我可以推荐这个thume.ca/projects/2012/11/04/…

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


【解决方案1】:

如果您希望在笔记本电脑屏幕上识别注视点。那么下面是你可以使用的方法:

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

  2. 根据眼睛标志物计算眼睛中心(Ex、Ey)

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

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

H(eye) = Topleftcorner(x) - Toprightcorner(x)

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

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

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

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

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

希望这会有所帮助!

【讨论】:

    【解决方案2】:

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

    https://github.com/LukeAllen/optimeyes

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

    【讨论】:

    • 我有一个问题,在识别凝视矢量(俯仰和偏航)之后如何识别屏幕上的凝视点(不一定)是笔记本电脑屏幕。但是,我们可以假设 Camera 和 Screen 将在同一平面上。在下面的答案中,我提到了仅适用于屏幕前的情况。
    猜你喜欢
    • 2018-05-31
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2014-09-05
    • 2013-01-14
    相关资源
    最近更新 更多