import cv2 import json import time # Inicializa o vídeo a partir da webcam (ou outro dispositivo de captura) cap = cv2.VideoCapture(0) # Variáveis para controle de tempo file_path = 'face.json' # Caminho do arquivo para salvar as coordenadas # Lista para armazenar as leituras readings = [] while True: # Captura o frame da câmera ret, frame = cap.read() # Conversão para escala de cinza para facilitar a detecção gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Utiliza um classificador de Haar Cascade para detectar objetos (neste caso, rostos) face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5) current_readings = [] # Adicionar as coordenadas na lista for idx, (x, y, w, h) in enumerate(faces): cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.putText(frame, f"Rosto {idx + 1}", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (255, 0, 0), 2) current_readings.append({'id': idx, 'x': int(x), 'y': int(y), 'a': int(w), 'l': int(h)}) timestamp = time.time() # Captura o timestamp atual readings.append({'timestamp': timestamp, 'rostos': current_readings}) # Se a lista atingir o limite máximo, remover a leitura mais antiga if len(readings) > 10: readings.pop(0) # Salvar as coordenadas no arquivo a cada intervalo de tempo if len(readings) == 10: with open(file_path, 'w') as file: json.dump({'frames': readings}, file) # Mostra o frame com os retângulos cv2.imshow('Detecção de Objetos', frame) # Verifica se o usuário pressionou a tecla 'q' para sair do loop if cv2.waitKey(1) & 0xFF == ord('q'): break # Libera a captura de vídeo e fecha as janelas cap.release() cv2.destroyAllWindows()