0

I’m currently using Pycharm.

I have two codes, one is for face recognition and the other is for reading information from the Arduino IDE.

The main idea of the project is that we’re going to read the RFID card and then we’re going to get the serial number and we will see if that serial number is approved or not. if the RFID card is recognized, it would move to face recognition.

Now what I want to do is that after executing the RFID code(if approved), I want it to read and execute the face recognition code.

Below are the codes

Reading from Arduino:

import serial
import time
import pandas as pd


device = 'COM6'
try:
    print("Connecting to device"), device
    arduino = serial.Serial(device, 9600)
except:
    print("Failed to connect on"), device

while True:
    time.sleep(1)

    try:
        data = arduino.readline()
        print(data)

        try:
            if data == b'213 237 169 54\r\n':
                print("Approved")

        except:
            print("no")

    except:
        print("Processing")

As for face recognition

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:
        #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)
        if conf>=73 and conf <=100:
           # print(id_)
            print(labels[id_])
            print("face recognized")
            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()

Does anyone have a solution for this? So, if the RFID serial number is approved, I want it to execute the face recognition code.

Thank you!!

3
  • put both scripts in functions and then use the script as a module to import it in a main script and then run it sequentially. It is a matter of how you refactor your scripts Commented Nov 30, 2021 at 13:14
  • I'll try this now. Thank you Commented Nov 30, 2021 at 13:18
  • Wrap both methods in a function and import it from the other file and then you'll be able to call it Commented Nov 30, 2021 at 13:18

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.