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

#### Get Started with Chroma DB and Retrieval Models using LangChain

In this tutorial, we will provide a walk-through example of how to use your data and ask questions using LangChain.

Python

#### Document Splitting with LangChain

In this tutorial, we will talk about different ways of how to split the loaded documents into smaller chunks using