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 г.