# pip install opencv-python opencv-contrib-python # Comando para instalar las librerías necesarias de visión por computadora import cv2 # Importamos la librería OpenCV, que nos permite trabajar con imágenes y video # Cambia esta dirección IP por la de tu cámara cap = cv2.VideoCapture('http://192.168.137.81:8080/video') # Creamos un objeto que captura video desde una cámara IP # VideoCapture abre la conexión a la dirección web de la cámara # Obtenemos el diccionario de marcadores ArUco predefinido (4x4 con 50 códigos) aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_4X4_50) # Establecemos los parámetros para la detección de marcadores ArUco parameters = cv2.aruco.DetectorParameters() # Creamos el detector de marcadores ArUco con el diccionario y parámetros detector = cv2.aruco.ArucoDetector(aruco_dict, parameters) # Iniciamos un bucle que se ejecuta mientras la cámara esté abierta while (cap.isOpened()): # Leemos un frame (fotograma) de la cámara # ret indica si la lectura fue exitosa, frame contiene la imagen ret, frame = cap.read() # Rotamos el frame 90 grados en sentido horario frame = cv2.rotate(frame, cv2.ROTATE_90_CLOCKWISE) # Convertimos el frame a escala de grises para mejorar la detección gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Detectamos los marcadores ArUco en la imagen en escala de grises corners, ids, rejected = detector.detectMarkers(gray) # Si se detectaron marcadores, dibujamos los marcadores en el frame if ids is not None: cv2.aruco.drawDetectedMarkers(frame, corners, ids) try: # Mostramos el frame en una ventana llamada 'Detected Ids' # cv2.resize() redimensiona la imagen a 480x640 píxeles cv2.imshow('Detected Ids', cv2.resize(frame, (480, 640))) # Capturamos la entrada del teclado (espera 1ms por cada iteración) key = cv2.waitKey(1) # Si presionamos 'q', salimos del bucle if key == ord('q'): break # Capturamos excepciones de OpenCV por si la transmisión se corta except cv2.error: print("Stream ended...") break # Liberamos los recursos de la cámara cap.release() # Cerramos todas las ventanas creadas por OpenCV cv2.destroyAllWindows()