*Apenas uma sugestão da realização do exercício, com o acréscimo de baixar as imagens. *
imagem_1 = cv2.imread('/content/1364-img0202.png')
imagem_2 = cv2.imread('/content/1364-img0203.png')
imagem_3 = cv2.imread('/content/1364-img0204.png')
# extraindo os rostos
def extrator_faces(imagem):
imagem = cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB) # convertendo as cores
imagem_gray = cv2.cvtColor(imagem, cv2.COLOR_RGB2GRAY)
classificador = cv2.CascadeClassifier('/content/haarcascade_frontalface_default.xml') # usando classificador treinado
faces = classificador.detectMultiScale(imagem_gray, 1.3, 5)
for (x,y,w,h) in faces: # para rodar nos array dentro da face, no caso a posição das imagens
imagem_roi = imagem[y:y+h, x:x+w] # selecionando o rosto, intervalo em que está localizado
imagem_roi = cv2.cvtColor(imagem_roi, cv2.COLOR_RGB2BGR) # para usar imwrite preciso deixar ela precisa BGR
cv2.imwrite('face' + str(faces[0][0]) + '.png', imagem_roi) # baixando as faces
extrator_faces(imagem_1)
extrator_faces(imagem_2)
extrator_faces(imagem_3)
# função para marcar os rosto
def extrator_para_faces_graf(imagem):
imagem = cv2.cvtColor(imagem, cv2.COLOR_BGR2RGB)
imagem_gray = cv2.cvtColor(imagem, cv2.COLOR_RGB2GRAY)
classificador = cv2.CascadeClassifier('/content/haarcascade_frontalface_default.xml')
faces = classificador.detectMultiScale(imagem_gray, 1.3, 5)
for (x,y,w,h) in faces:
imagem_roi = imagem[y:y+h, x:x+w]
imagem_roi = cv2.cvtColor(imagem_roi, cv2.COLOR_RGB2BGR)
imagem_roi = cv2.cvtColor(imagem_roi, cv2.COLOR_BGR2RGB)
return imagem_roi
plt.figure(figsize=(20,10))
plt.subplot(131)
plt.title("Pessoa 1")
plt.imshow(extrator_para_faces_graf(imagem_1))
plt.subplot(132)
plt.title("Pessoa 2")
plt.imshow(extrator_para_faces_graf(imagem_2))
plt.subplot(133)
plt.title("Pessoa 3")
plt.imshow(extrator_para_faces_graf(imagem_3))
plt.show()