Определить лица на фотографии

Распознать лица на фотографии можно через библиотеку OpenCV. Установить данную библиотеку можно через код ниже:

python3 -m pip install opencv-python

Далее надо скачать файл «haarcascade_frontalface_default.xml», который содержит алгоритм для определения лиц на фотографии.

Ссылка файла на GitHub

Теперь можно выполнить код для определения лиц.

import cv2

# Фотография, на которой надо найти лица
image = "image.jpg"

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
image = cv2.imread(image )
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Определение лиц
faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor= 1.1,
    minNeighbors= 5,
    minSize=(10, 10)
)

# Координаты лиц (x y width height)
faces
# [[100 116 211   211]
#  [396 226 168   168]]

# Рисуем квадраты над лицами
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (255, 255, 0), 2)

# сохранение картинки с найденными лицами
cv2.imwrite("save_image.jpg", image)

В результате будет сгенерирована примерно следующая картинка (картинка создана через код выше).

Скриншот фильма «Гостья из будущего»

Количество лиц на фотографий

Вывести количество лиц на фотографий можно можно через массив faces, в которой содержат координы найденных лиц.

"Лиц найдено: " + format(len(faces))
# Лиц найдено: 2