# How can I use NumPy to calculate the count of distinct colors in an image?

In my computer vision course at school, I was told exclusively to use NumPy functions only to yield the total count of unique colors present in an image. Can anyone provide me with a solution? I tried surfing on the internet for this, but I got more confused.

1 Like

I have provided a solution below that finds the number of unique colors in an array. Since I didn’t have an image array to work with, I’ve used a random array, but the code will work for both cases.

The solution works as follows:

• First, a 16x16x3 array is generated using NumPy’s `random.randint()` function, which generates random values between 0 and 1 and is cast to an 8-bit unsigned integer.
• The array is then reshaped to a 2D array of shape `(w*h, 3)` using NumPy’s `reshape` function, which stacks the rows of the 3D array.
• The `np.unique()` function is then applied to the flattened array to find the unique rows, and the number of unique rows is calculated using the `len()` function.

If you want to use your own image from your directory, simply replace the first two lines with the following code:

``````from PIL import Image
# load image and convert to NumPy array
img = Image.open('path/to/image.png')
arr = np.array(img)
``````