Pop

Tensorflow. Reconocimiento facial con inteligencia artificial (3/3)

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()



3 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. Hola, 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

Curso .NET Core en C# - 34.Creamos nuestro propio log

34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...