Для распознавания лица с использованием OpenCV и Python можно использовать библиотеку dlib вместе с предварительно обученной моделью для извлечения ключевых точек лица и распознавания лиц. Вот шаги для реализации распознавания лица:
Шаг 1: Установка необходимых библиотек Убедитесь, что у вас установлены библиотеки OpenCV и dlib:
pip install opencv-python
pip install dlib
Шаг 2: Загрузка предварительно обученной модели Загрузите предварительно обученную модель для распознавания лиц, например, модель “shape_predictor_68_face_landmarks.dat” для извлечения ключевых точек лица. Вы можете загрузить эту модель с веб-сайта dlib (http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2). Поместите файл модели в рабочую директорию вашего проекта.
Шаг 3: Загрузка изображения и обнаружение лица
import cv2
import dlib
# Загрузка изображения
image = cv2.imread("face_image.jpg")
# Создание детектора лиц
detector = dlib.get_frontal_face_detector()
# Обнаружение лиц на изображении
faces = detector(image)
# Перебор обнаруженных лиц
for face in faces:
# Извлечение координат лица
x1 = face.left()
y1 = face.top()
x2 = face.right()
y2 = face.bottom()
# Нарисовать прямоугольник вокруг лица
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
# Отображение изображения с обнаруженными лицами
cv2.imshow("Face Detection", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Шаг 4: Извлечение ключевых точек лица Для распознавания лиц вы можете извлечь ключевые точки лица с помощью модели “shape_predictor_68_face_landmarks.dat”. Ключевые точки включают контуры лица, глаза, нос и рот.
import cv2
import dlib
# Загрузка изображения
image = cv2.imread("face_image.jpg")
# Создание детектора лиц
detector = dlib.get_frontal_face_detector()
# Загрузка модели ключевых точек лица
predictor = dlib.shape_predictor("shape_predictor_68_face_landmarks.dat")
# Обнаружение лиц на изображении
faces = detector(image)
# Перебор обнаруженных лиц
for face in faces:
# Извлечение координат лица
x1 = face.left
# Извлечение ключевых точек лица
landmarks = predictor(image, face)
# Перебор ключевых точек лица
for n in range(0, 68):
x = landmarks.part(n).x
y = landmarks.part(n).y
# Нарисовать окружности вокруг ключевых точек
cv2.circle(image, (x, y), 2, (0, 0, 255), -1)
# Отображение изображения с ключевыми точками лица
cv2.imshow("Facial Landmarks", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Шаг 5: Распознавание лица с использованием модели распознавания Для распознавания лиц на основе ключевых точек вы можете использовать предварительно обученную модель, которая сравнивает ключевые точки с набором известных лиц. Вам понадобится набор данных известных лиц с их соответствующими именами для обучения модели распознавания.
import cv2 import dlib import face_recognition # Загрузка изображения image = cv2.imread("face_image.jpg") # Загрузка набора данных известных лиц known_faces_encodings = [] known_faces_names = [] # Извлечение ключевых точек лица и кодирование изображений лиц known_image = cv2.imread("known_face.jpg") known_face_encoding = face_recognition.face_encodings(known_image)[0] known_faces_encodings.append(known_face_encoding) known_faces_names.append("Known Face") # Создание детектора лиц detector = dlib.get_frontal_face_detector() # Обнаружение лиц на изображении faces = detector(image) # Перебор обнаруженных лиц for face in faces: # Извлечение координат лица x1 = face.left() y1 = face.top() x2 = face.right() y2 = face.bottom() # Распознавание лица face_image = image[y1:y2, x1:x2] face_encoding = face_recognition.face_encodings(face_image)[0] # Сравнение с известными лицами matches = face_recognition.compare_faces(known_faces_encodings, face_encoding) name = "Unknown" # Поиск соответствия if True in matches: matched_index = matches.index(True) name = known_faces_names[matched_index] # Нарисовать прямоугольник и имя вокруг лица cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2) cv2.putText(image, name, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2) # Отображение изображения с распознанными лицами cv2.imshow("Face Recognition", image)
cv2.waitKey(0) cv2.destroyAllWindows()
Шаг 6: Запуск скрипта Сохраните скрипт с расширением “.py” и запустите его. Он будет загружать изображение, обнаруживать лица, извлекать ключевые точки лица и распознавать лица на основе предварительно обученной модели.
Обратите внимание, что эти шаги представляют базовую реализацию распознавания лица с использованием OpenCV и dlib. Вы можете доработать код и настроить его согласно своим требованиям, добавив больше изображений известных лиц для обучения модели распознавания.