Обнаружение ориентира лица с помощью Dlib и OpenCV. Поэтому я подумал о том, чтобы написать немного о библиотеках на основе компьютерного зрения, потому что они могут помочь нам с рядом приложений, и я думал о создании приложения на основе компьютерного зрения в своих следующих блогах.
Теперь, используя OpenCV, мы можем определенно идентифицировать черты лица, но если мы хотим идентифицировать конкретные черты лица, наша библиотека goto - это Dlib. Итак, Dlib поможет нам определить основные ориентиры нашего лица, такие как брови, глаза, линия подбородка и т. Д. Он в основном состоит из предварительно обученной модели и помогает нам идентифицировать эти особенности.
Теперь я бы порекомендовал вам скачать модель, которую вы можете сделать по приведенной ниже ссылке:
Я попытаюсь дать общее представление о том, как Dlib помогает нам в обнаружении черт лица. Взгляните на схему, приведенную ниже:
Различные точки на схеме представляют различные особенности лица, и они используются для построения модели или проекта, который я пытаюсь создать. Эти точки в основном представляют собой очертания всех основных черт лица, таких как губы, брови и т. Д. В проекте, который я создаю, мы собираемся работать с глазами. Модель в основном определяет 68 различных точек.
В качестве предварительного условия вам может потребоваться выполнить следующие команды с помощью pip для установки некоторых библиотек в вашу среду:
pip install cmake pip install dlib pip install cv2
Если вам интересно, cmake - это библиотека, необходимая для установки библиотеки dlib, которую мы используем для модели, а cv2 используется как библиотека компьютерного зрения. Поэтому я добавил комментарии к своему коду, чтобы упростить его понимание и чтобы мне не приходилось объяснять каждую строчку. Я добавлю жирные линии, чтобы их было легче понять.
#Importing the main libraries import cv2 import dlib #Initializing the variable to capture video cap = cv2.VideoCapture(0) #Calling the dlib library to read and understand faces hog_face_detector = dlib.get_frontal_face_detector() #Importing our pretrained model dlib_facelandmark = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat") #Main Execution code while True: _, frame = cap.read() gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = hog_face_detector(gray) for face in faces: face_landmarks = dlib_facelandmark(gray, face) for n in range(0, 68): x = face_landmarks.part(n).x y = face_landmarks.part(n).y cv2.circle(frame, (x, y), 1, (0, 255, 255), 1) cv2.imshow("Face Landmarks", frame) key = cv2.waitKey(1) if key == 27: break cap.release() cv2.destroyAllWindows()
Некоторые из ключевых элементов кода, которые вам следует знать из основного кода выполнения:
- cap.read (): используется для просмотра видеопотока с веб-камеры
- cv2.cvtColor (frame, cv2.COLOR_BGR2GRAY): Используется для преобразования цветного видеопотока в оттенки серого, потому что он обеспечивает более высокую точность, и это делается с помощью OpenCV
- faces = hog_face_detector (серый): использование библиотеки dlib для идентификации лиц в данном кадре, и мы можем иметь несколько лиц в кадре, которые будут частью цикла, и он все равно будет вычислять, просто если вы Если у вас слишком много лиц, общее время сокращается.
- dlib_facelandmark: Это в основном идентифицирует все ориентиры от лица, полученного из списка лиц.
- Цикл for предназначен для вызова всех 68 функций, которые инициализируются как часть модели.
Основной исполняемый код в основном запускает бесконечный цикл и продолжает проверять лица, указывает на лицо и закрывает веб-камеру каждый раз, когда вы нажимаете клавишу ‘s’.
Вы можете использовать изображение, если не хотите использовать веб-камеру. Вам просто нужно переключиться на изображение и загрузить его с помощью библиотеки Изображение.
На картинке выше вы можете видеть контур моего лица. Я собираюсь прикрепить ссылку на свой github, откуда вы можете клонировать данный проект и работать над ним. Это супер просто и супер круто для начинающих, чтобы учиться и работать над ним.
Вы можете скачать модель и исходный код по указанной ниже ссылке:
Спасибо за чтение. Продолжай учиться.
Ваше здоровье.