es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se puede almacenar una imagen como un ndarray de cada uno de sus canales de color?

Actualmente estoy tratando de obtener una imagen y guardarla en un arreglo para cada uno de sus canales de color (RGB). Cuando agrego la imagen a una lista, en su lugar almacena los tres canales de color de cada píxel juntos. Me preguntaba cómo podría separarlos.

Código actual

img = cv2.imread(f'Data/keyboard/00{i+1:02d}.jpg') 
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)   # BGR -> RGB
imgdata.append([img,"keyboard"])

Imprimo el siguiente resultado:

print(trainData[0][0][0])

Salida actual:

[185, 233, 255]
[185, 233, 255]
[185, 233, 255]
...
[189, 229, 254]

Formato necesario:

Rojo = [[185, 185, 16, ..., 189], [185, 185, 16, ..., 185], ...]
Verde = [[233, 233, 233, ..., 229], [233, 233, 233, ..., 229], ...]
Azul = [[255, 255, 255, ..., 254], [255, 255, 255, ..., 254], ...]
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para separar la imagen en sus tres canales de color (RGB), podemos utilizar la función de división de numpy para separar la matriz de la imagen a lo largo del último eje (que representa los canales de color). Aquí está el código modificado:

    img = cv2.imread(f'Data/keyboard/00{i+1:02d}.jpg') 
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)   # BGR -> RGB
    
    # Dividir la imagen en sus canales de color
    red_channel, green_channel, blue_channel = np.split(img, 3, axis=-1)
    
    # Añadir los tres canales de color por separado
    imgdata.append([red_channel, green_channel, blue_channel, "keyboard"])
    
    print(trainData[0][0][0])
    

    Esto debería darte el formato necesario donde cada canal de color se separa en su propia lista.

Comments are closed.