Predictive Hacks

# Most Dominant Color of an Image

When we build machine learning models on Images, apart from the image labels, we want also to get the color of them, usually as categorical variable. For that reason, we need to convert the RGB pixels into color labels.

### How to get the name of the most dominant colors

The logic is to iterate over all image pixels and to get their labels. Then, based on the frequency, we will get the n most frequent color names.

```import PIL
from PIL import Image
import requests
from io import BytesIO
import webcolors
import pandas as pd

url = "https://www.fantasy-milos.com/slider/69/slider_image.jpg"
response = requests.get(url)
img = Image.open(BytesIO(response.content))
img
```

This is the function which converts an RGB pixel to a color name

```import webcolors

def closest_colour(requested_colour):
min_colours = {}
for key, name in webcolors.css3_hex_to_names.items():
r_c, g_c, b_c = webcolors.hex_to_rgb(key)
rd = (r_c - requested_colour[0]) ** 2
gd = (g_c - requested_colour[1]) ** 2
bd = (b_c - requested_colour[2]) ** 2
min_colours[(rd + gd + bd)] = name
return min_colours[min(min_colours.keys())]
```

Now let’s write a function that takes as an input the image and returns the top n colors plus their corresponding weights/proportions in the image.

```def top_colos(image, n):
# convert the image to rgb
image = image.convert('RGB')

# resize the image to 300 x 300
image = image.resize((300,300))

detected_colors =[]
for x in range(image.width):
for y in range(image.height):
detected_colors.append(closest_colour(image.getpixel((x,y))))
Series_Colors = pd.Series(detected_colors)
output=Series_Colors.value_counts()/len(Series_Colors)

top_colos(img,10)
```
``````steelblue         0.107411
lightseagreen     0.103100
cornflowerblue    0.089833
royalblue         0.077656
darkcyan          0.067311
dimgrey           0.060656
darkslategrey     0.046433
lightslategrey    0.042911
gray              0.042200
darkgrey          0.040644``````

As we can see the top 3 dominant colors are the “steelblue” (10.74%), “lightseagreen” (10.3%) and “cornflowerblue” (8.98%)!

### Get updates and learn from the best

Python

#### Image Captioning with HuggingFace

Image captioning with AI is a fascinating application of artificial intelligence (AI) that involves generating textual descriptions for images automatically.

Python

#### Intro to Chatbots with HuggingFace

In this tutorial, we will show you how to use the Transformers library from HuggingFace to build chatbot pipelines. Let’s