es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamando y ejecutando otro archivo dentro de una instrucción ‘if’.

Actualmente estoy usando Pycharm.

Tengo dos códigos, uno es para reconocimiento facial y el otro es para leer información del Arduino IDE.

La idea principal del proyecto es que vamos a leer la tarjeta RFID y luego obtendremos el número de serie y veremos si ese número de serie está aprobado o no. Si se reconoce la tarjeta RFID, pasará al reconocimiento facial.

Ahora lo que quiero hacer es que después de ejecutar el código RFID (si está aprobado), quiero que lea y ejecute el código de reconocimiento facial.

A continuación se muestran los códigos

Lectura desde Arduino:

importación serial
importación de tiempo
importación pandas como pd

dispositivo = ‘COM6’
intentar:
imprimir (“Conectando al dispositivo”), dispositivo
arduino = serial.Serial(dispositivo, 9600)
excepto:
imprimir (“Falló la conexión en”), dispositivo

mientras Verdadero:
tiempo.sleep(1)

intentar:
    datos = arduino.readline()
    imprimir(datos)

    intentar:
        si datos == b'213 237 169 54\r\n':
            imprimir ("Aprobado")

    excepto:
        imprimir ("no")

excepto:
    imprimir ("Procesando")

En cuanto al reconocimiento facial

importación de cv2
importación en conserva

face_cascade = cv2.CascadeClassifier(‘C:/Users/Person/PycharmProjects/pythonProject/cascade/haarcascade_frontalface_default.xml’)
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read(“reconocimiento/training.yml”)

etiquetas = {}
con abrir(“etiquetas.pickle”, ‘rb’) como f:
og_labels = pickle.load(f)
etiquetas = {v: k para k, v in og_labels.items()}

cap = cv2.VideoCapture(0)

mientras Verdadero:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
caras = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
para(x, y, w, h) en caras:
# print(x, y, w, h)
roi_gray = gray[y:y+h, x:x+w]
roi_color = frame[y:y+h, x:x+w]

    id_, conf = recognizer.predict(roi_gray)
    si conf>=73 y conf <=100:
       # print(id_)
        imprimir(etiquetas[id_])
        imprimir("reconocimiento facial")
        fuente = cv2.FONT_HERSHEY_SIMPLEX
        nombre = etiquetas[id_]
        color = (255, 255, 255)
        trazo = 2
        cv2.putText(frame, nombre, (x, y), fuente, 1, color, trazo, cv2.LINE_AA)

    img_item = "persona.png"
    cv2.imwrite(img_item, roi_gray)

    color = (255, 0, 0)
    trazo = 2
    end_cord_x = x + w
    end_cord_y = y + h
    cv2.rectangle(frame, (x, y), (end_cord_x, end_cord_y), color, trazo)

cv2.imshow("Captura de vídeo", frame)

si cv2.waitKey(20) y 0xff == ord('q'):
    romper

cap.release()
cv2.destroyAllWindows()

¿Alguien tiene una solución para esto? Entonces, si se aprueba el número de serie RFID, quiero que ejecute el código de reconocimiento facial.

¡¡Gracias!!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para ejecutar el código de reconocimiento facial después de que se apruebe el número de serie RFID, simplemente puede incluir el código de reconocimiento facial dentro de la declaración “if” que comprueba la aprobación del número de serie RFID. Esto se puede hacer mediante la sangría del código de reconocimiento facial debajo de la declaración “if”, de la siguiente manera:

    try:
        if data == b'213 237 169 54\r\n':
            print("Aprobado")
            # Código de reconocimiento facial
            import cv2
            import pickle
    
            face_cascade = cv2.CascadeClassifier('C:/Users/Person/PycharmProjects/pythonProject/cascade/haarcascade_frontalface_default.xml')
            recognizer = cv2.face.LBPHFaceRecognizer_create()
            recognizer.read("recognizer/training.yml")
    
            labels = {}
            with open("labels.pickle", 'rb') as f:
                og_labels = pickle.load(f)
                labels = {v: k for k, v in og_labels.items()}
    
            cap = cv2.VideoCapture(0)
            while True:
                ret, frame = cap.read()
                gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
                faces = face_cascade.detectMultiScale(gray, scaleFactor=1.5, minNeighbors=5)
                for(x, y, w, h) in faces:
                    roi_gray = gray[y:y+h, x:x+w]
                    roi_color = frame[y:y+h, x:x+w]
    
                    id_, conf = recognizer.predict(roi_gray)
                    if conf>=73 and conf <=100:
                        font = cv2.FONT_HERSHEY_SIMPLEX
                        name = labels[id_]
                        color = (255, 255, 255)
                        stroke = 2
                        cv2.putText(frame, name, (x, y), font, 1, color, stroke, cv2.LINE_AA)
    
                    img_item = "person.png"
                    cv2.imwrite(img_item, roi_gray)
    
                    color = (255, 0, 0)
                    stroke = 2
                    end_cord_x = x + w
                    end_cord_y = y + h
                    cv2.rectangle(frame, (x, y), (end_cord_x, end_cord_y), color, stroke )
    
                cv2.imshow("Video Capture", frame)
    
                if cv2.waitKey(20) & 0xff == ord('q'):
                    break
    
            cap.release()
            cv2.destroyAllWindows()
    
    except:
        print("no")
    

    Esto asegurará que el código de reconocimiento facial se ejecute solo si el número de serie RFID es aprobado.

Comments are closed.