Борьба с открытием замка до того, как условие будет выполнено
Здравствуйте Друзья,
Я возился с проектом блокировки дверей распознавания лиц, но он разблокирует условие, которое выполнено. Я попробовал несколько решений, но ни одно из них не увенчалось успехом, и я в тупике.Питание регулируется с помощью одноканального релейного переключателя, но когда я запускаю свою программу, она немедленно разблокируется. проект основан на этом Как создать дверной замок распознавания лиц с помощью Raspberry Pi | Raspberry Pi | Maker Pro[^]
я достаточно новичок в python, и любой совет будет очень признателен.
import cv2 from picamera.array import PiRGBArray from picamera import PiCamera import numpy as np import pickle import RPi.GPIO as GPIO from time import sleep relay_pin = [26] GPIO.setmode(GPIO.BCM) GPIO.setup(relay_pin, GPIO.OUT) GPIO.output(relay_pin, 0) with open('labels', 'rb') as f: dict = pickle.load(f) f.close() camera = PiCamera() camera.resolution = (640, 480) camera.framerate = 30 rawCapture = PiRGBArray(camera, size=(640, 480)) faceCascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml") recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read("trainer.yml") font = cv2.FONT_HERSHEY_SIMPLEX for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True): frame = frame.array gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5) for (x, y, w, h) in faces: roiGray = gray[y:y+h, x:x+w] id_, conf = recognizer.predict(roiGray) for name, value in dict.items(): if value == id_: print(name) if conf <= 70: GPIO.output(relay_pin, 1) cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2) cv2.putText(frame, name + str(conf), (x, y), font, 2, (0, 0 ,255), 2,cv2.LINE_AA) else: GPIO.output(relay_pin, 0) cv2.imshow('frame', frame) key = cv2.waitKey(1) rawCapture.truncate(0) if key == 27: break cv2.destroyAllWindows()
Что я уже пробовал:
Я попытался поставить временные остановки, чтобы увидеть, была ли это ошибка синхронизации кода, и я попытался загрузить код при запуске, но ни один из них, похоже, не сработал