import cv2 import numpy as np # Função para processar cada frame do vídeo def processar_frame(frame): # Convertendo para escala de cinza cinza = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Limiarização para criar uma imagem binária _, binarizada = cv2.threshold(cinza, 128, 255, cv2.THRESH_BINARY_INV) # Encontrar os contornos contornos, _ = cv2.findContours(binarizada, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # Supondo que o maior contorno seja o caminho if contornos: maior_contorno = max(contornos, key=cv2.contourArea) # Encontrar retângulo delimitador para o maior contorno x, y, w, h = cv2.boundingRect(maior_contorno) # Calcular distância das bordas largura_frame = frame.shape[1] distancia_esquerda = x distancia_direita = largura_frame - (x + w) # Desenhar um retângulo ao redor do caminho detectado e linhas das bordas cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.line(frame, (x, 0), (x, frame.shape[0]), (255, 0, 0), 2) cv2.line(frame, (x + w, 0), (x + w, frame.shape[0]), (255, 0, 0), 2) return frame, distancia_esquerda, distancia_direita else: return frame, None, None # Inicializando a captura de vídeo cap = cv2.VideoCapture(1) # Use 0 para a câmera padrão do seu sistema try: while True: # Capturando frame a frame ret, frame = cap.read() if not ret: print("Falha ao capturar imagem da câmera") break # Processar o frame atual frame_processado, distancia_esq, distancia_dir = processar_frame(frame) if distancia_esq is not None and distancia_dir is not None: print(f"Distância da borda esquerda: {distancia_esq} pixels") print(f"Distância da borda direita: {distancia_dir} pixels") # Exibir o frame processado cv2.imshow('Frame Processado', frame_processado) # Pressione 'q' para sair do loop if cv2.waitKey(1) & 0xFF == ord('q'): break finally: # Quando tudo estiver feito, liberar a captura cap.release() cv2.destroyAllWindows()