
eyeLike 入门用普通摄像头实时追踪瞳孔中心【免费下载链接】eyeLikeA webcam based pupil tracking implementation.项目地址: https://gitcode.com/gh_mirrors/ey/eyeLike想在屏幕前观察用户的注视方向专业眼动仪往往要数千元还要配专用硬件。eyeLike 是一个 MIT 许可的开源项目基于 OpenCV用一台普通网络摄像头就能把左右瞳孔中心逐帧标出来适合低门槛验证眼动追踪的基本流程。环境与获取先把 eyeLike 编译起来本节只讲如何把项目跑起来依赖很少重点是装好 OpenCV 开发库。组件要求说明C 编译器C11GCC 7 及以上源码使用 C11 标准CMake2.8 及以上负责生成编译文件OpenCV2.x / 3.x / 4.x 均可需安装含头文件的开发库# 克隆项目 git clone https://gitcode.com/gh_mirrors/ey/eyeLike cd eyeLike # 进入独立构建目录并编译 mkdir build cd build cmake .. make -j4 # 运行可执行文件 ./bin/eyeLike第一次运行时的预期现象弹出 4 个窗口原始画面标出人脸框、人脸裁剪图、左右眼放大图人脸裁剪图上出现瞳孔中心小圆点随眼睛转动实时更新按f把当前帧保存为frame.png按c退出程序原理速览一帧图像如何变成瞳孔点整个处理分三步每步都只在上一块区域内做文章。 第一步找出人脸程序从每帧画面的红色通道里跑一个 Haar 级联分类器框出当前最大的一张人脸。人脸框定好后后续的眼睛定位都限制在这块区域内进行。✂️ 第二步按比例圈出左右眼在人脸框内程序按固定百分比切出左右两个眼睛候选区域顶部位置、宽度、高度都是比例值。这套比例集中写在 src/constants.h改这里就能调整取眼范围。 第三步梯度交汇定瞳孔中心对眼睛区域算法逐像素计算亮度梯度让梯度向量朝瞳孔方向汇聚取交汇点作为瞳孔中心。该思路来自 Fabian Timm 的梯度法论文特点是实现简单、定位稳定。需要说明当前版本定位的是眼睛中心而不是真实视线方向。README 也明确标注它还是一个开发参考实现尚未计算屏幕注视点所以别把它当成完整的 gaze 输出。⚙️ 参数在哪改以及常见问题检测不理想时先改 src/constants.h 里的参数再排查光照与距离。下面是最常见的三种情况。编译报找不到 OpenCV确认装的是开发库含头文件必要时用cmake -DOpenCV_DIR/路径 ..指向安装目录窗口里框不到人脸正对摄像头、光线均匀、距离约 50–70 厘米程序只取最大一张脸避免多张脸干扰瞳孔点频繁跳动调高kGradientThreshold减少误判或改善照明、微调眼睛区域比例最常调的几个参数改完重新make即可const int kEyePercentTop 25; // 眼睛区域距脸顶的百分比 const int kEyePercentWidth 35; // 眼睛区域宽度百分比 const int kEyePercentHeight 30; // 眼睛区域高度百分比 const double kGradientThreshold 50.0; // 梯度阈值越大越严格适合用它做什么交互原型验证做 gaze-based UI 前先确认现有摄像头能否稳定定位瞳孔教学与算法研究作为梯度法瞳孔定位的 C 参考实现方便阅读和改造注视研究的采集环节先拿到稳定的瞳孔中心点再叠加自己的视线建模无障碍与游戏交互的前期实验作为眼神控制键盘、菜单的底层信号来源和其他方案的差别方案额外硬件部署门槛典型定位专业眼动仪需专用设备中高精度商用红外 / 穿戴方案需红外相机或头带中高研究级精度eyeLike普通摄像头无用现有摄像头低开发参考、教学下一步先按上文编译运行确认能稳定看到瞳孔中心点把constants.h里的kPlotVectorField设为true观察梯度向量场阅读 src/findEyeCenter.cpp理解梯度交汇的完整实现【免费下载链接】eyeLikeA webcam based pupil tracking implementation.项目地址: https://gitcode.com/gh_mirrors/ey/eyeLike创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考