Ingenium2.0 Ответов: 0

Борьба с открытием замка до того, как условие будет выполнено


Здравствуйте Друзья,

Я возился с проектом блокировки дверей распознавания лиц, но он разблокирует условие, которое выполнено. Я попробовал несколько решений, но ни одно из них не увенчалось успехом, и я в тупике.Питание регулируется с помощью одноканального релейного переключателя, но когда я запускаю свою программу, она немедленно разблокируется. проект основан на этом Как создать дверной замок распознавания лиц с помощью 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()


Что я уже пробовал:

Я попытался поставить временные остановки, чтобы увидеть, была ли это ошибка синхронизации кода, и я попытался загрузить код при запуске, но ни один из них, похоже, не сработал

0 Ответов