import cv2
import json

dataset = "dataset.json"



# open the dataset file
with open(dataset, 'r') as f:
    data = json.load(f)

# check the last data
last_data = data[-1]

# check the name    
name = last_data["name"]

# Open a video capture from the default camera (0)
video_capture = cv2.VideoCapture(0)

# Set the window to normal so it can be resized
cv2.namedWindow('Image Capture', cv2.WINDOW_NORMAL)

# Set the window to full screen
cv2.setWindowProperty('Image Capture', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

while True:
    # Capture a frame from the video stream
    ret, frame = video_capture.read()

    # Convert the frame to grayscale for face detection
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Detect faces in the frame
    faces = face_cascade.detectMultiScale(gray_frame, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

    # Initialize the key variable to None
    key = cv2.waitKey(1)

    # Press 'q' to save the entire image, but only if faces were detected
    if len(faces) > 0 and key == ord('q'):
        # Save the frame before drawing the rectangle
        cv2.imwrite('faces/' + name + '.jpg', frame)
        break

    # Draw rectangles around the detected faces
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2)

    # Display the frame
    cv2.imshow('Image Capture', frame)

# Release the video capture and close the OpenCV window
video_capture.release()
cv2.destroyAllWindows()