Точка / Область взгляда с C ++ и Opencv

Я сделал программу на C ++ с использованием OpenCV, чтобы позволить моей веб-камере распознавать мое лицо и глаза. Затем я хотел бы определить центр моих учеников, а затем точку или область взгляда на моем экране. Кто-нибудь знает, как это сделать? Пожалуйста, не моя программа использует простую компьютерную веб-камеру.
Заранее благодарю за совет.

1

Решение

Я думаю, что мой проект Optimeyes здесь:

https://github.com/LukeAllen/optimeyes

делает то, что вы ищете: обнаружение зрачка и отслеживание взгляда. Включенный «Теоретический документ» pdf обсуждает принципы работы и содержит ссылки на другие документы. Проект был написан с использованием Python-версии OpenCV, но вы можете перенести его на C ++!

3

Другие решения

В случае, если вы хотите определить точку взгляда на экране вашего ноутбука. Тогда ниже метод, который вы можете использовать:

  1. Используя shape_predictor_68_face_landmarks.dat, получите ориентиры для глаз (шесть точек на глаз)

  2. Рассчитать центр глаза (Ex, Ey) из ориентиров глаз

  3. Если бы вы могли получить центр радужной оболочки (Ix, Iy) сверху ответ или из HCT

  4. Рассчитать масштабный коэффициент: W (глаз) = Topleftcorner (x) — Toprightcorner (x)

H (глаз) = 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 (Экран) / 2) + (R (y) * r (y))

r (x) и r (y) указывают расстояние радужной оболочки от центра глаза, которое рассчитывается следующим образом:

r (x) = COI (x) — COE (x)

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

Надеюсь это поможет!!

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector