Question: I'm using Python and PIL.

I have images in RGB and I would like to know those who contain only one color (say #FF0000 for example) or a few very close colors (#FF0000 and #FF0001).

I was thinking about using the histogram but it is very hard to figure out something with the 3 color bands, so I'm looking for a more clever algorithm.

Any ideas?

> 
> ImageStat module is THE answer! Thanks Aaron. 
>  I use ImageStat.var to get the variance and it works perfectly.
> 
> 
> 

Here is my piece of code:

```
from PIL import Image, ImageStat

MONOCHROMATIC_MAX_VARIANCE = 0.005

def is_monochromatic_image(src):
    v = ImageStat.Stat(Image.open(src)).var
    return reduce(lambda x, y: x and y < MONOCHROMATIC_MAX_VARIANCE, v, True)

```

Answer: 
Try the [ImageStat module](http://www.pythonware.com/library/pil/handbook/imagestat.htm). If the values returned by `extrema` are the same, you have only a single color in the image.
First, you should define a distance between two colors.
Then you just have to verify for each pixel that it's distance to your color is small enough.