Вы забыли изменить размер изображения перед рисованием прямоугольника
#resize image TOO
image = cv2.resize(image,(0,0),fx=5,fy=5)
for (top, right, bottom, left), name in zip(face_locations, face_names):
# Scale back up face locations since the image was scaled to 1/5 size.
top *= 5
right *= 5
bottom *= 5
left *= 5
# Draw a box around the face.
cv2.rectangle(image, (left, top), (right, bottom), (0, 0, 255), 2)
cv2.rectangle(image, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
font = cv2.FONT_HERSHEY_DUPLEX
cv2.putText(image, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
Кроме того, у вас есть в два раза больше этой строки
face_locations = face_recognition.face_locations(image)
в вашем скрипте.В общем, я бы не упомянул об этом, но эта функция довольно медленная, поэтому вы не хотите делать это дважды.
По моему скромному мнению, и по моему опыту, вы делаете это изменение масштаба , поскольку поиск местоположений лиц с помощью библиотеки Face_recognition является чертовски медленным.Если я могу вмешаться,
Посмотрите на Каскады Хаара - для поиска местоположений на передней и боковой гранях.
Он выполняет ту же работу, но вам нужно интегрировать его в свою программу, что не является проблемой вообще.В основном это то же самое, что и
face_recognition.face_locations(image)
Хотя библиотека face_recognition может находить местоположения лиц до 60-х годов. Каскады Хаара, хотя и немного менее точные и надежные, могут делать это до 1 с.Вам не нужно будет изменять масштаб изображения и играть с координатами