Olá! Gostaria de saber como podemos escrever o código para que ele receba uma certa quantidade de imagens e processe cada uma dela de maneira automática sem escrever o código para cada uma delas.
Abaixo segue a minha resolução que trata cada magem separadamente:
#Carregando as imagens:
imagem1 = cv2.imread(os.path.join(diretorio_base,"Recortar_face1.png")) #BGR
imagem2 = cv2.imread(os.path.join(diretorio_base,"Recortar_face2.png")) #BGR
imagem3 = cv2.imread(os.path.join(diretorio_base,"Recortar_face3.png")) #BGR
#Convertendo as imagens para RGB para visualizar com o pyplot(plt):
imagem1 = cv2.cvtColor(imagem1,cv2.COLOR_BGR2RGB)
imagem2 = cv2.cvtColor(imagem2,cv2.COLOR_BGR2RGB)
imagem3 = cv2.cvtColor(imagem3,cv2.COLOR_BGR2RGB)
#Convertendo imagem para escala de cinza para usar o classificador de cascata de Haar (mais rápido):
imagem1_gray = cv2.cvtColor(imagem1,cv2.COLOR_RGB2GRAY)
imagem2_gray = cv2.cvtColor(imagem2,cv2.COLOR_RGB2GRAY)
imagem3_gray = cv2.cvtColor(imagem3,cv2.COLOR_RGB2GRAY)
#Carregando o Classificador de Haar (especializado em rostos frontais)
classificador_face = cv2.CascadeClassifier(os.path.join(diretorio_base,"Classificadores/haarcascade_frontalface_default.xml"))
#Aplicando o classificador:
face1 = classificador_face.detectMultiScale(imagem1_gray,1.3,5)
face2 = classificador_face.detectMultiScale(imagem2_gray,1.3,5)
face3 = classificador_face.detectMultiScale(imagem3_gray,1.3,5)
#Criando uma cópia da imagem original (em RGB) para anotar os retângulos
imagem1_anotada = imagem1.copy()
imagem2_anotada = imagem2.copy()
imagem3_anotada = imagem3.copy()
#Desenhando retângulo ao redor das faces de cada imagem
#Imagem1
for (x,y,w,h) in face1:
cv2.rectangle(imagem1_anotada,(x,y),(x+w,y+h), (255,255,0),2)
#Imagem2
for (x,y,w,h) in face2:
cv2.rectangle(imagem2_anotada,(x,y),(x+w,y+h), [255,255,0],2)
#Imagem3
for (x,y,w,h) in face3:
cv2.rectangle(imagem3_anotada, (x,y),(x+w,y+h), [255,255,0],3)
#Recortando as faces
#Imagem1
for (y,x,h,w) in face1:
imagem_roi1 = imagem1[x:x+w,y:y+h]
#Imagem2
for (y,x,h,w) in face2:
imagem_roi2 = imagem2[x:x+w,y:y+h]
#Imagem3
for (y,x,h,w) in face3:
imagem_roi3 = imagem3[x:x+w,y:y+h]