Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

424
Vistas
¿Hay alguna razón para cambiar el orden de los canales de una imagen de RGB a BGR?

He estado siguiendo este tutorial de clasificación de videos de keras en el que, en la sección de preparación de datos , cargan los fotogramas de un video en la función load_video de manera bastante genérica, pero lo que me llamó la atención fue esta línea:

 frame = frame[:, :, [2, 1, 0]]

Esta es la primera vez que encuentro esto, la mayoría de las veces agregará el cuadro "tal cual" a su lista de cuadros, pero aquí cambian el orden de los canales (si no me equivoco) de RGB a BGR, no pude encontrar nada relacionado con él en la web o en sus documentos, ¿alguien puede darme alguna idea para esta decisión?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Por experiencia, la razón por la que el orden puede cambiar depende del marco que esté utilizando para cargar las imágenes. OpenCV en particular ordena los canales en formato BGR debido principalmente a razones históricas que ahora están desactualizadas . Debido a esto, lamentablemente estamos atascados con esta elección de diseño. Las imágenes en formato RGB normal se pueden ver con scikit-image, matplotlib y Pillow.

De hecho, si observa la función load_video , usa OpenCV para abrir un video, de modo que los cuadros que ingresan tienen formato BGR. Por lo tanto, el intercambio de canales es obligatorio para obtener el formato RGB:

 def load_video(path, max_frames=0): cap = cv2.VideoCapture(path) frames = [] try: while True: ret, frame = cap.read() if not ret: break frame = crop_center(frame) frame = frame[:, :, [2, 1, 0]] frames.append(frame) if len(frames) == max_frames: break finally: cap.release() return np.array(frames)

Por supuesto, no necesita invertir los canales ya que una red neuronal aprenderá en función de los datos de entrada que se le proporcionaron, pero la gente tiende a hacer esto para que sea fácil depurar imágenes y no tener que preocuparse por invertir continuamente los canales para mostrar. Específicamente, si una red neuronal se entrenó en el orden BGR, si cargó imágenes en formato RGB, entonces se debe invertir los canales, ya que así fue como se representaron los canales de imagen en el entrenamiento. En general, depende del marco, pero debe tener esto en cuenta al usar una red neuronal después de haberla entrenado. Si los datos se entrenaron en formato BGR, si sus imágenes se leen en formato RGB, deberá invertir los canales antes de la inferencia.

De hecho, ¡este es un error común cuando se usan redes! Sea extremadamente diligente y comprenda cómo se preprocesaron los datos de la imagen para la red antes de usarlos.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda