A simple way to get the dominant color of an image in python
Overview
In this post, we’ll explore how to extract the dominant color from an object in an image using three open-source Python libraries. We’ll guide you through the following steps:
- Remove the background of the image, isolating the object of interest.
- Extract the dominant color code from the object.
- Retrieve the color name corresponding to the extracted color code.
Execution
1. Setting Up the Environment
First, let’s create a virtual environment to isolate our dependencies. We’ll use Python 3.9 for this example:
pyenv virtualenv 3.9 dominant-color
2. Removing the Background
To begin, we’ll use the rembg
library to remove the background from the image.
Install the rembg
package:
pip install rembg
Remove the background from the image:
from rembg import remove
input_path = 'input.png'
output_path = 'output.png'
with open(input_path, 'rb') as i:
with open(output_path, 'wb') as o:
input = i.read()
output = remove(input)
o.write(output)
You can also run this process directly from the terminal. For more details, visit the rembg
repository.
3. Retrieving the Dominant Color Code
Next, we’ll use the colorthief
library to extract the dominant color code from the object.
Install the colorthief
package:
pip install colorthief
Get the dominant color code:
from colorthief import ColorThief
color_thief = ColorThief('/path/to/imagefile')
# get the dominant color
dominant_color = color_thief.get_color(quality=1)
The colorthief
library can also generate a color palette. For more details, visit the ColorThief project page.
4. Retrieving the Color Name
Finally, we’ll use the colornamer
library to retrieve the color name corresponding to the dominant color code.
Install the colornamer
package:
pip install colornamer
Get the color name:
from colornamer import get_color_from_rgb
get_color_from_rgb([5, 135, 210])
For more information on how to interpret the results, visit the colornamer
repository.
Acknowledgments
This post was inspired by the excellent work found in the rembg
, ColorThief
, and colornamer
repositories.