Skip to main content

Background Remover

The Need

It's been good long while since Microsoft first released a Teams version for Linux and yet, one of Teams' coolest features doesn't exist in said Linux version: removable backgrounds. As someone who uses Linux for their daily driver, this annoys me.

Well, I'm an engineer, so of course, I found a solution.

Using OpenCV and a v4l2loopback device (basically a virtual webcam you can write data to), I threw together a Python application that takes your normal webcam input, removes and replaces the background, and outputs that to the created video device. Problem solved :)

Note, this will work anywhere WebCams are used, not just Teams

Now, the program can also be used to remove backgrounds from video files and save them as video files as well!

How to Use

WebCam Replacement

Dependencies:

  • x86 or x64 only as mediapipe, a dependency, doesn't support ARM
    • Although, there are versions of mediapipe that may work if you have Apple Silicon or a Raspberry Pi
    • If on ARM, you'll have to install from the GitHub source and modify pyproject.toml to use a custom mediapipe library like mediapipe-silicon or mediapipe-rpi4 or something else
  • python >= 3.8 (3.11 is what's supported officially)
  • pip
  • v4l2loopback

Setup:

  1. Configure v4l2loopback (may not be necessary):
  • Recommended something like this:
    export DEVICE_ARR=(`ls /sys/devices/virtual/video4linux | tr -d 'video'`); \
    sudo modprobe v4l2loopback \
        devices=1 exclusive_caps=1 video_nr=${DEVICE_ARR[1]} max_buffers=2 \
        card_label=v4l2lo
    
  1. Install with pip install bgrm

Then, you can run:

  • Run with python -m bgrm <options> (use --help to see all options)
  • Example: python -m bgrm -b ~/Pictures/Wallpapers/ni-skyline-wallpaper.png -w 320 -H 240 -s 2.0

File Replacement

You can also remove the background from video files. It works just like the WebCam, but instead of setting the --camera cli arg, you call the program like this:

python -m bgrm --file_mode -i <input file> -o <output file> <other options>

Build from Repo

You can also build the package yourself from source (or grab the latest version from the releases tab)

To do that you need the "poetry" build system.

Run poetry build and install the whl from the dist/ folder

Metadata

Release files for bgrm 11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for bgrm 11
File Interpreter ABI Platform
bgrm-11-py3-none-any.whl Python 3 none any Details

Release files / bgrm-11-py3-none-any.whl

Download URL bgrm-11-py3-none-any.whl
Size 19.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
87627a4ab6bfdff3dcf451b4690fe10430e61f712092946a32d05fb5887b6495
BLAKE2b-256 checksum
How to use checksums
b80d21a22426c66cd251ff5fa8a05483e17ffb150532787dd5945b59c17d6761
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.11.3

Release history Release notifications | RSS feed

This release

11 This release

1 release file

10

2 release files

9

2 release files

8

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page