Number of colors in an image

Christos TZOTZIOY Georgiou tzot at sil-tec.gr
Fri Nov 26 18:25:30 EST 2004


On 26 Nov 2004 17:18:04 -0500, rumours say that David Bolen
<db3l at fitlinxx.com> might have written:

>        # Use a dictionary to count colors by constructing it with an
>        # iterator of tuples of (pixel,1).  The inner izip makes each
>        # pixel tuple out of the individual band values, and the outer
>        # izip combines it with the infinitely repeating 1 to generate
>        # the values for the dictionary constructor.
>        colors = dict(izip(izip(r,g,b), repeat(1)))
>
>        print 'Number of colors =', len(colors)

A set seems more appropriate in this case:

color_count = len(set(izip(r, g, b))) # untested code

>For a greyscale, or single banded image, it should be faster just to
>use the built-in PIL "histogram" method and take the length of the
>resulting list.

More like the count of non-zero elements in the histogram; I believe the
length of the resulting list will be constant (ie 256).
-- 
TZOTZIOY, I speak England very best,
"Tssss!" --Brad Pitt as Achilles in unprecedented Ancient Greek



More information about the Python-list mailing list