Python: detección de rostros y envío de notificaciones

Hoy en día, Python se ha convertido en uno de los lenguajes más populares, así como en el lenguaje de programación favorito entre los desarrolladores. La sintaxis simplificada y el patrón de este idioma hacen que este idioma esté presente en la lista de tendencias.

La mayor fortaleza de Python es una gran colección de biblioteca estándar que se puede usar para lo siguiente:

  • Aprendizaje automático
  • Aplicaciones GUI (como Kivy, Tkinter, PyQt, etc.)
  • Marcos web como Django (usado por YouTube, Instagram, Dropbox)
  • Procesamiento de imágenes (como OpenCV, Pillow)
  • Web scraping (como Scrapy, BeautifulSoup, Selenium)
  • Marcos de prueba
  • Multimedia
  • Computación científica
  • Procesamiento de textos y muchos más..

Para el aprendizaje automático y la IA, el lenguaje python es la primera prioridad para los desarrolladores porque las bibliotecas preconstruidas del lenguaje python (como NumPy, Pandas, Pybrain y SciPy) ayudan a acelerar el desarrollo de la IA.

En este artículo, se implementa un método simple usando python para detectar rostros humanos y luego de detectar se envían notificaciones al usuario. Si no se reconoce la cara, no envía notificaciones al propietario.

Tecnologías utilizadas:

  • OpenCV: OpenCV es una enorme biblioteca de código abierto para visión artificial, aprendizaje automático y procesamiento de imágenes. OpenCV admite una amplia variedad de lenguajes de programación como Python, C++, Java, etc. Puede procesar imágenes y videos para identificar objetos, rostros o incluso la escritura a mano de un ser humano. Cuando se integra con varias bibliotecas, como Numpy, que es una biblioteca altamente optimizada para operaciones numéricas, la cantidad de armas aumenta en su arsenal, es decir, cualquier operación que se pueda hacer en Numpy se puede combinar con OpenCV. Este tutorial de OpenCV lo ayudará. aprenda el procesamiento de imágenes desde lo básico hasta lo avanzado, como operaciones en imágenes, videos usando un gran conjunto de programas y proyectos Opencv.

Sinch : Sinch se utiliza para enviar mensajes al usuario siempre que la cámara detecte algún rostro. El usuario tendrá que crear una cuenta en sinch y luego podrá obtener el ‘service_plan_id’ y el ‘token’ de ellos. Después de lo cual el usuario puede ingresar este último en el código. El número del remitente y del destinatario también debe cambiarse en consecuencia.

Pasos para el token de SMS:

  1. Crea una nueva cuenta en Sinch (Consulta este enlace)

Haga clic en Registrarse – Registrarse

2. Haga clic en Panel de mensajes y conversaciones:

Click en mensajería y conservaciones

3.   Haga clic en la opción SMS en la ventana de inicio:

Haga clic en sms

4. Obtendrá su código desde allí.

Estamos utilizando el archivo frontal del Clasificador Harcascade, descargue ese archivo y especifique la ruta.

Clx-sdk-xms 1.0.0: es un SDK de Python para la API REST de CLX Communications (también llamada XMS) para enviar y recibir mensajes SMS individuales o por lotes. También admite envíos programados, organizando sus destinatarios frecuentes en grupos y personalizando su mensaje para cada destinatario mediante la parametrización. Sinch usa clx-sdk-xms para crear API’S.

Python3

# OpenCV program to detect face in real time
# import libraries of python OpenCV
# where its functionality resides
 
from cv2 import cv2
 
import clx.xms
import requests
# By creating an account in sinch sms You can get your code.
# code for sms starts here
#client is a object that carries your unique token.
client = clx.xms.Client(service_plan_id='your_service id',
                        token='token_id')
 
create = clx.xms.api.MtBatchTextSmsCreate()
create.sender = 'sender no.'
create.recipients = {'recipients no.'}
create.body = 'This is a test message from your Sinch account'
# code for sms ends here
# Face Recognition starts from here.
# load the required trained XML classifiers
#https://github.com/opencv/opencv/blob/master
#/data/haarcascades/haarcascade_frontalface_default.xml
# Trained XML classifiers describes some features of some
# object we want to detect a cascade function is trained
# from a lot of positive(faces) and negative(non-faces)
# images.
 
detector = cv2.CascadeClassifier(
    "path")
 
# capture frames from a camera
 
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
#We want to send sms only once not until the face is there and for that we are
#initializing the counter
counter = 0
# loop runs if capturing has been initialized.
 
while True:
    # reads frames from a camera
 
    ret, img = cap.read()
 
    if ret:
        # convert to gray scale of each frames
 
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # Detects faces of different sizes in the input image
 
        faces = detector.detectMultiScale(gray, 1.1, 4)
 
        for face in faces:
             
            x, y, w, h = face
            # if there is any face and counter is zero then only it will send notification to the sender
            if(face.any() and counter ==0):
                try:
                   batch = client.create_batch(create)
                except (requests.exceptions.RequestException, clx.xms.exceptions.ApiException) as ex:
                    print('Failed to communicate with XMS: %s' % str(ex))
                #sms ends here
            # To draw a rectangle in a face
            cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
     
         
        cv2.imshow("Face", img)
        counter = 1
       # Wait for 'q' key to stop
 
    key = cv2.waitKey(1)
    if key == ord("q"):
        break
# Close the window
cap.release()
# De-allocate any associated memory usage
 
cv2.destroyAllWindows()

Producción:

Detección de imagen:

Notificación:

Publicación traducida automáticamente

Artículo escrito por teamhackathons y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *