23. Reconocimiento facial con inteligencia artificial (3)
- Hola a todos.Una vez finalizado el curso de google, vamos a entrenar un modelo para hacer un ejemplo de reconocimiento facial.Este ejemplo lo dividiremos en tres vídeos, que estructuraremos de la siguiente manera.
- En el tercer y último vídeo que podéis ver a continuación practicamos el reconocimiento facial a través de la imagen de la webcam. También veremos el código necesario para este propósito.
- Os dejo el código visto en el vídeo y un enlace de descarga con el proyecto completo:
# Abajo mostramos el rectángulo delimitado (adivinado) para los ojos debajo de las gafas de sol
# Usaremos el rectángulo delimitador para averiguar cómo asignar los lentes en los puntos clave
# glasses_triangle_vertices = np.array ([(280,220), (2800,220), (280,600)]). astype (np.float32)
thug_glasses_triangle_vertices = np.array([(65,10), (490,10), (65,70)]).astype(np.float32)
def thug_image(image):
faces = dameCaras(image)
image_info = obtenerPuntosClave(image, faces)
sunglasses = cv2.imread("imagenes/gafas.png", cv2.IMREAD_UNCHANGED)
alpha_channel = sunglasses[:,:,3]
for (face, keypoints) in image_info:
# We keep only the keypoints related to eyes (from 0 to 9)
eye_keypoints = keypoints[:10]
# Compute the bounding rectangle for the eyes
eye_boundingRect = cv2.boundingRect(np.array(eye_keypoints).astype(np.float32))
# Build the triangle vertices needed by cv2.getAffineTransform()
eyes_triangle_vertices = np.array([(eye_boundingRect[0],eye_boundingRect[1]),
(eye_boundingRect[0]+eye_boundingRect[2],eye_boundingRect[1]),
(eye_boundingRect[0],eye_boundingRect[1]+eye_boundingRect[3])]).astype(np.float32)
# Compute the affine transform matrix from the two sets of three points (glasses and eyes)
map_matrix = cv2.getAffineTransform(thug_glasses_triangle_vertices, eyes_triangle_vertices)
# Apply the affine transformation to the glasses
transformed_sunglasses = cv2.warpAffine(sunglasses, map_matrix, (image.shape[1], image.shape[0]))
# Build a binary mask of the pixels where the sunglasses are
transformed_sunglasses_mask = transformed_sunglasses[:,:,3] > 0
# Overwrite pixels in the original image with sunglasses pixels using their mask
image[:,:,:][transformed_sunglasses_mask] = transformed_sunglasses[:,:,0:3][transformed_sunglasses_mask]
return image
import cv2
import time
from keras.models import load_model
def laptop_camera_go():
# Crear instancia de captura de video.
cv2.namedWindow("Deteccion facial")
vc = cv2.VideoCapture(0)
# capturamos el primer fotograma.
if vc.isOpened():
rval, frame = vc.read()
else:
rval = False
# mantener el flujo de video abierto
while rval:
# trazar la imagen de la cámara con detecciones marcadas
frame = thug_image(frame)
cv2.imshow("Deteccion facial activada", frame)
# Funcionalidad de salida: presione cualquier tecla para salir del video de
#la computadora portátil
key = cv2.waitKey(20)
if key > 0: # exit by pressing any key
cv2.destroyAllWindows()
for i in range (1,5):
cv2.waitKey(1)
return
# obtener siguinete frame
time.sleep(0.05) # controlamos framerate
rval, frame = vc.read()
laptop_camera_go()
- Os dejo un enlace al proyecto completo. https://drive.google.com/open?id=1MEZaj7CdcKzFbFqKJQWvyUrhccXkckYZ
Este comentario ha sido eliminado por el autor.
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarHola, podrías resubir el proyecto completo, el enlace está caido, es que no tengo los datos de prueba y entrenamiento y no se muy bien de donde conseguirlos
ResponderEliminar