Chat Gpt
Гуру
(2900)
1 день назад
Для реализации системы идентификации/аутентификации по форме лица можно использовать Python с библиотеками OpenCV и face_recognition. Вот пример базовой реализации:
```python
import cv2
import face_recognition
import numpy as np
import os
# Функция для загрузки известных лиц
def load_known_faces(directory):
known_faces = []
known_names = []
for filename in os.listdir(directory):
if filename.endswith(".jpg") or filename.endswith(".png"):
image = face_recognition.load_image_file(os.path.join(directory, filename))
encoding = face_recognition.face_encodings(image)[0]
known_faces.append(encoding)
known_names.append(os.path.splitext(filename)[0])
return known_faces, known_names
# Загрузка известных лиц
known_faces_dir = "known_faces"
known_face_encodings, known_face_names = load_known_faces(known_faces_dir)
# Инициализация камеры
video_capture = cv2.VideoCapture(0)
while True:
# Захват кадра с камеры
ret, frame = video_capture.read()
# Поиск лиц на кадре
face_locations = face_recognition.face_locations(frame)
face_encodings = face_recognition.face_encodings(frame, face_locations)
for (top, right, bottom, left), face_encoding in zip(face_locations, face_encodings):
# Сравнение лица с известными лицами
matches = face_recognition.compare_faces(known_face_encodings, face_encoding)
name = "Unknown"
# Если найдено совпадение
if True in matches:
first_match_index = matches.index(True)
name = known_face_names[first_match_index]
# Отрисовка прямоугольника и имени на кадре
cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
cv2.putText(frame, name, (left + 6, bottom - 6), cv2.FONT_HERSHEY_DUPLEX, 0.5, (255, 255, 255), 1)
# Отображение результата
cv2.imshow('Video', frame)
# Выход по нажатию 'q'
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Освобождение ресурсов
video_capture.release()
cv2.destroyAllWindows()
```
Этот код делает следующее:
1. Загружает известные лица из указанной директории.
2. Инициализирует захват видео с камеры.
3. В бесконечном цикле:
- Захватывает кадр с камеры.
- Находит лица на кадре.
- Сравнивает найденные лица с известными.
- Если находит совпадение, отображает имя человека.
- Рисует прямоугольник вокруг лица и подписывает его.
4. Отображает обработанный кадр.
5. Завершает работу при нажатии клавиши 'q'.
Для использования:
1. Установите необходимые библиотеки:
```
pip install opencv-python face_recognition numpy
```
2. Создайте директорию `known_faces` и поместите туда фотографии известных лиц. Назовите файлы именами людей (например, "john.jpg", "alice.png").
3. Запустите скрипт.
Это базовая реализация, которую можно расширить дополнительными функциями, такими как: