Python 3: estoy tratando de encontrar todos los píxeles verdes en una imagen atravesando todos los píxeles usando un np.array, pero no puedo evitar el error de índice

Mi código actualmente consiste en cargar la imagen, lo cual es exitoso y no creo que tenga ninguna conexión con el problema.

Luego paso a transformar la imagen en color en una matriz np.rig llamada rgb

    # convert image into array
    rgb = np.array(img)
    red = rgb[:,:,0]
    green = rgb[:,:,1]
    blue = rgb[:,:,2]

Para verificar mi comprensión de esta matriz, en caso de que pueda ser la raíz del problema, es una matriz tal que rgb [coordenada x, coordenada y, banda de color] que contiene el valor entre 0-255 de rojo, verde o azul.

Entonces, mi idea era hacer un bucle for anidado para atravesar todos los píxeles de mi imagen (620 px, 400 px) y ordenarlos en función de la relación de verde a azul y rojo en un intento de seleccionar los píxeles más verdes y establecer todos los demás a negro o 0.

for i in range(xsize):
for j in range(ysize):
    color = rgb[i,j]  <-- Index error occurs here
    if(color[0] > 128):
        if(color[1] < 128):
            if(color[2] > 128):
                rgb[i,j] = [0,0,0]

El error que recibo al intentar ejecutar esto es el siguiente:

IndexError: el índice 400 está fuera de límites para el eje 0 con tamaño 400

Pensé que podría tener algo que ver con los límites que estaba dando i y j, así que intenté clasificar solo una pequeña parte interna de la imagen pero aún obtuve el mismo error. En este punto, estoy perdido en cuanto a cuál es incluso la raíz del error y mucho menos incluso la solución.

Respuestas a la pregunta(1)

Su respuesta a la pregunta