USD86.9963 EUR100.8287
Казань
25 °C
Наб.Челны
22 °C
24 дек 2019 в 14:12

Пример простой системы распознавания лиц

2177
2
1
Назад к новостям

Распознавание лица — последний тренд в авторизации пользователя. Apple использует Face ID, OnePlus — технологию Face Unlock. Baidu использует распознавание лица вместо ID-карт для обеспечения доступа в офис

Как сделать систему распознавания лица которая будит работать с точностью 98%?

Попробуем!

Технология распознавания лица это новая эра в системах видеонаблюдения и контроля доступа.

Давайте попробуем написать небольшую программу которая будет распознавать ваше лицо.

Для этого нам понадобиться :

1. Операционная система Ubuntu (можно Windows установив программу Anaconda)

2. Python 3

3. Библиотека Opencv

4. Установка face_recognition API

Установка

Для начала нам нужно установить python (скачать с официального сайта python.org) так как именно на нем мы будем писать код.

Установка Opencv

Opencv – библиотека компьютерного зрения , обработки изображений с открытым исходным кодом

Установку Opencv производим с помощью команды pip (открыв терминал):

pip3 install opencv-python

Установка face_recognition API

Face_recognition API- самое популярное API для распознавания лиц

pip3 install dlib

pip3 install face_recognition

Пишем код:

Создайте файл face.py и затем скопируйте приведенный ниже код:
import os

import cv2

import face_recognition

def load(file_path):

return face_recognition.load_image_file(file_path)

def encode(image):

return face_recognition.face_encodings(image)[0]

known_face_encodings = []

known_face_names = []

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

image_dir = os.path.join(BASE_DIR, "images")

for root, dirs, files in os.walk(image_dir):

for file in files:

if file.endswith("jpeg") or file.endswith("png") or file.endswith("jpg"):

path = os.path.join(root, file)

label = os.path.basename(os.path.dirname(path))

known_face_encodings.append(encode(load(path)))

known_face_names.append(label)

face_locations = []

face_encodings = []

face_names = []

process_frame = True

cap = cv2.VideoCapture(0)

while True:

ret, frame = cap.read()

process_frame = True

resized_small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) # Making frame 1/4 of original, faster processing

rgb_small_frame = resized_small_frame[:, :, ::-1] # Converting BGR to RGB

if process_frame:

face_locations = face_recognition.face_locations(rgb_small_frame)

face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)

face_names = []

for face_encoding in 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]

face_names.append(name)

process_frame = not process_frame

for (top, right, bottom, left), name in zip(face_locations, face_names):

top *= 4

right *= 4

bottom *= 4

left *= 4

cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)

cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)

font = cv2.FONT_HERSHEY_DUPLEX

cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)

cv2.imshow('Face Recognition', frame)

if cv2.waitKey(1) & 0xFF == ord('q'):

break

cap.release()

cv2.destroyAllWindows()

В файл где храниться созданный файл нужно создать папку images, а в ней папку с вашим именем и поместить туда вашу фотографию

Запуск:
Открываем терминал:
python3 face.py

2177
2
1
- Автор статьи

Дежурный редактор

Все новости автора
Дзен

Подписывайтесь на наш канал в Яндекс.Дзен

Подписатся
Последние комментарии
Гость 3511

Гость 3757, странный ты чел, а жить то где?, может к тебе домой переселиться? И вообще чем эта "дыра" так тебя зацепила, что ты так считаешь? Хочешь сказать что ГЭС лучше?

На двух дорогах Замелекесья ограничат движение из-за ремонта сегодня в 15:00
Гость 3511

Алабугу защитили, НПЗ защитили, что же будет дальше? А дальше будем защищать продуктовые магазины.

Вице-премьер Новак: нефтяные компании выделили средства на защиту НПЗ сегодня в 14:57
Гость 3555

Затраты лягут на плечи налогоплательщиков через цены на топливо. Хотя налогоплательщики уже своими налогами оплачивают эту защиту. Получается минобороны берут двойной налог. Выгодно однако... Нельзя допускать повышения цен. Нефть - это народное достояние. По крайней мере, так говорят...

Вице-премьер Новак: нефтяные компании выделили средства на защиту НПЗ сегодня в 14:53
Гость 1295

Похоже, что скоро заживем.

Минпромторг сообщил об оживлении авторынка России: продажи выросли на 23% сегодня в 14:43
Комментарии2

Гость 653 31 янв 2023 в 15:26
Ответить (0)

всё хорошо до тех пор, пока у нас не появляется 100 или миллион лиц. в такой ситуации face_recognition будет обрабатывать от нескольких минут до суток

Гость 784 01 фев 2023 в 11:37
Ответить (0)

Без ошибок сначала бы писать научились! Для начала как пишется тся и ться!

Подписывайся
на Telegram
поделиться в ВК