You have a great picture of yourself and want to use it for your social media profile, but the background is distracting. Another picture has a perfect background for your profile picture. How do you combine the two? Some smartphone apps that do this kind of photo manipulation but are too expensive or are riddled with ad-ware. And they aren't open source. Rembg is up to the challenge!
Rembg is written in Python, so install Python 3 on your computer. Most Linux distributions include Python 3 by default. You can check your version with this simple command:
$ python3 --version
Rembg requires at least Python 3.7 and no greater than Python 3.11. In my case, I have Python 3.10.6 installed.
Install Rembg on Linux
I created a directory called
PythonCoding on my Linux laptop and then made a Python virtual environment:
$ python3 -m venv /home/don/PythonCoding
Next, I installed
$ python3 -m pip install rembg
Time to work some magic. First, I chose the image containing a picture taken at All Things Open in 2019.
I ran the following
rembg command to rename it with a shorter filename for convenience:
$ rembg i dgw_ato.jpeg dgw_noback.jpg
The first time you run
rembg, it downloads an open source pattern recognition model. This can be over 100 MB and
rembg saves it in your user directory as
~/.u2net/u2net.onnx. The model is the U-2-Net and uses the Apache 2.0 license. For more information about the pattern recognition models (including how to train your own), read the Rembg documentation.
It created my new photo without the background in about ten seconds. I have a Ryzen 7 with 16 GB of RAM. Your experience may vary depending on your hardware.
I have used GIMP to remove backgrounds in the past, but
rembg does it quicker and more completely than I have experienced with GIMP.
That's all there is to removing a background. What about adding a new one?
Add a new background
Next, I want to add a new background to the picture. There are different ways to do that. You can, for instance, combine images with ImageMagick, but getting the frame size right can be complex. The easiest way is to use GIMP or Krita.
I used GIMP. First, open the newly created image (
ato_image.jpg in my case). Now go to the File menu and select Open as layers. Choose a different image for the background. This image opens as an overlay above the existing photo.
I wanted to move the new background below my portrait. On the right of the GIMP window are two thumbnails, one for each image layer. The background layer is on top. I dragged the background layer beneath my portrait image, and here's the result:
That's a much nicer setting for my profile picture!
Rembg has three subcommands you can review in the
$ rembg --help
rembg ifor files
rembg pfor folders
rembg sfor HTTP server
Rembg is released with an MIT license. Try it the next time you need a background removed from an image.