Here's a thought: Too bad numpy doesn't have a 24 bit integer, but you could tack a 0 on, making your image 32 bit, then use histogram2d to count the colors.
something like (untested): # create the 32 bit image 32bit_im = np.zeros((w, h), dtype = np.uint32) view = 32bit_im.view(dtype = np.uint8).reshape((w,h,4)) view[:,:,:3] = im # histogram it: bins = # this is the trick -- setting your bins right # remember that histrogram is designed for floats, so you're bin boundaries shold be between the inteer values you want. colors = np.histogram(32bit_im, bins=bins) NOTE: the image processing scikit may well have somethign already -- histogramming an image is a common process. -Chris On Sun, Jan 15, 2012 at 9:40 AM, Nadav Horesh <nad...@visionsense.com> wrote: > im_flat = im0[...,0]*65536 + im[...,1]*256 +im[...,2] > colours = np.unique(im_flat) > > Nadav > > ________________________________ > From: numpy-discussion-boun...@scipy.org > [numpy-discussion-boun...@scipy.org] On Behalf Of Tony Yu [tsy...@gmail.com] > Sent: 15 January 2012 18:03 > To: Discussion of Numerical Python > Subject: Re: [Numpy-discussion] Counting the Colors of RGB-Image > > > > On Sun, Jan 15, 2012 at 10:45 AM, <a...@pdauf.de> wrote: >> >> >> Counting the Colors of RGB-Image, >> nameit im0 with im0.shape = 2500,3500,3 >> with this code: >> >> tab0 = zeros( (256,256,256) , dtype=int) >> tt = im0.view() >> tt.shape = -1,3 >> for r,g,b in tt: >> tab0[r,g,b] += 1 >> >> Question: >> >> Is there a faster way in numpy to get this result? >> >> >> MfG elodw > > > Assuming that your image is made up of integer values (which I guess they'd > have to be if you're indexing into `tab0`), then you could write: > >>>> rgb_unique = set(tuple(rgb) for rgb in tt) > > I'm not sure if it's any faster than your loop, but I would assume it is. > > -Tony > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > -- -- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception chris.bar...@noaa.gov _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion