Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

430
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda