OpenCV имеет каскад haar для обнаружения глаз и другие вещи обнаружения с каскадом haar. Каскад Хаара - это в основном несколько слабых классификаторов, которые принимают решение об этих частях - глаза или нет. Это довольно логично и требует много работы, но в наши дни это устарело.

Новые базовые методы глубокого обучения имеют лучшую точность во всех частях лица. Итак, как проще всего извлечь глаза с помощью подхода на основе глубокого обучения. Вы угадаете, да, Длиб и его Face Landmark очки. Для этого достаточно 68 баллов.

Эта фотография с веб-сайтов помогает понять, что такое ориентиры на лице:

Эти фотографии являются самыми важными во всей статье:

Левый глаз - от 37 до 40 и от 39 до 42.

Правые глаза - от 43 до 46 и от 44 до 47.

Покажи мне код:

import dlib detector = dlib.get_frontal_face_detector() detect=detector(photo,1) predictor=dlib.shape_predictor("shape_predictor_68_face_landmarks.dat) shape=predictor(photo,detect[0])

Итак, теперь у нас есть запчасти. Как это извлечь. Без труда:

shape.part(number)

Для левого глаза:

x1=shape.part(36).x x2=shape.part(39).x y1=shape.part(37).y y2=shape.part(40).y

и купированные глаза:

lefteye=rgb[y1:y2,x1:x2]

Для правого глаза:

x1=shape.part(42).x x2=shape.part(45).x #43 46 #44 47 y1=shape.part(43).y y2=shape.part(46).y righteye=rgb[y1:y2,x1:x2]

Также глаза не имеют прямоугольной формы. Если нам нужны полные глаза, мы должны, например, выделить несколько строк и столбцов с обрезанными глазами:

righteye=rgb[y1-10:y2+10,x1-10:x2+10]

10 не понятно. вы должны использовать процент разрешения.

Пример с реальным изображением:

Https://github.com/anilkay/ComputerVisionExamples/blob/master/beatian.ipynb

Спасибо за чтение!

Первоначально опубликовано на сайте http://anilkaynr.wordpress.com 14 октября 2019 г.