Hace unas semanas necesité hacer un script en Python que genere algunas decenas de imágenes. Básicamente, se tiene como entrada imágenes como estas:


(un borde con alguna forma y un color en un fondo blanco)

Las imágenes generadas tienen que tener ciertos números en el centro, pintados en cada caso del mismo color que el borde:

La primer parte del script tiene que determinar el segundo color predominante de la imagen (el primero es el blanco), esta es la forma en que lo hice usando PIL:

def get_color(image):
    colors = image.getcolors()  # colors is a list of (count, color)
    colors.sort(lambda y,x: cmp(x[0], y[0])) # bigger count first
    c = colors.pop(0)
    while white(c): # find the non-white color most used in the image
        c = colors.pop(0)
    return c[1]

def white(color):
    color = color[1]
    return color[0] == 255 and color[1] == 255 and color[2] == 255