from keras.models import load_model  # TensorFlow is required for Keras to work
from PIL import Image, ImageOps  # Install pillow instead of PIL
import numpy as np
import cv2
import os
from gpiozero import LED
from time import sleep
led=LED(26)
sirene=LED(14)
compteur=0

while True:
	sleep(3)
	cap = cv2.VideoCapture(0)
	ret,frame = cap.read()
	#cv2.imshow("webcam image", frame)
	#key=cv2.waitKey(0)#en attente appuyer sur n'importe quelle touche
	cv2.imwrite('Test.jpg', frame)#photo dans le dossier
	cap.release()
	cv2.destroyAllWindows()
	# Disable scientific notation for clarity
	np.set_printoptions(suppress=True)

	# Load the model
	model = load_model("keras_Model.h5", compile=False)

	# Load the labels
	class_names = open("labels.txt", "r").readlines()

	# Create the array of the right shape to feed into the keras model
	# The 'length' or number of images you can put into the array is
	# determined by the first position in the shape tuple, in this case 1
	data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)

	# Replace this with the path to your image
	image = Image.open('Test.jpg').convert("RGB")

	# resizing the image to be at least 224x224 and then cropping from the center
	size = (224, 224)
	image = ImageOps.fit(image, size, Image.Resampling.LANCZOS)

	# turn the image into a numpy array
	image_array = np.asarray(image)

	# Normalize the image
	normalized_image_array = (image_array.astype(np.float32) / 127.5) - 1

	# Load the image into the array
	data[0] = normalized_image_array

	# Predicts the model
	prediction = model.predict(data)

#code à ajouter 
	print(prediction)
	if prediction[0][0]>0.5:
		print("Entreé")
		led.on()
		sirene.on()
		sleep(0.1)
		sirene.off()
		sleep(1)
		led.off()
		
		compteur=compteur+1
		print(compteur)
		
	else:
		print("Rien")
		
	os.remove('Test.jpg')
	

