Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

421
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!