Обнаружение нескольких лиц с помощью детектора лиц Dlib с помощью python

Ниже приведен код, используемый для обнаружения одной грани в изображении, но проблема заключается в том, что если в изображении есть несколько граней, он берет только первую. Pls предлагает

import caffe, dlib, io
from __future__ import print_function
import os
import matplotlib.pyplot as plt

detector = dlib.get_frontal_face_detector()
img21 = 'group.jpg'
im_name = img21
img = io.imread(os.path.join('./',im_name))
faces=[]
faces= detector(img)
total= len(faces)
print('total faces here :',total)
cropped_face = input_image_cropped[faces[0].top():faces[0].bottom(),
faces[0].left():faces[0].right(), :]
input_image_cropped = caffe.io.load_image(os.path.join('./', im_name))  
cropped_face = input_image_cropped[faces[0].top():faces[0].bottom(), 
faces[0].left():faces[0].right(), :]
h = faces[0].bottom() - faces[0].top()
w = faces[0].right() - faces[0].left()
age_prediction_cropped = age_net.predict([cropped_face])
print('nt   predicted age (Dlib-cropped image):',
age_prediction_cropped[0].argmax())
plt.show()

К ВАШЕМУ СВЕДЕНИЮ:
я удалил другие части кода, которые не требуются.

Я прошел по ссылке ниже, но не смог запустить цикл для всех обнаруженных лиц ? pls предлагает как могу я побежать петля для всех обнаруженных сторон.
http://dlib.net/face_detector.py.html

1 ответ

  1. Со следующим изменением проблема решена

    для i, d в перечислении (грани):
    cropped_face = input_image_cropped[ d.top (): d.bottom (), d.слева (): d.справа(), :]
    input_image_cropped = caffe.io.load_image (os.путь.join (‘./’, im_name))
    cropped_face = input_image_cropped[d.top (): d.bottom (), d.слева (): d.справа(), :]