ОpenCV python обнаружение лица на фотографии

Для распознавания лица с использованием 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. Вы можете доработать код и настроить его согласно своим требованиям, добавив больше изображений известных лиц для обучения модели распознавания.

Оставьте комментарий