Bgrm
Virtual webcam that takes real webcam footage and replaces the background in order to have Virtual Backgrounds in MS Teams for Linux where the feature is unimplemented.
Install / Use
/learn @blueOkiris/BgrmREADME
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:
- 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
- Install with
pip install bgrm
Then, you can run:
- Run with
python -m bgrm <options>(use--helpto 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
Related Skills
claude-opus-4-5-migration
83.0kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
docs-writer
99.2k`docs-writer` skill instructions As an expert technical writer and editor for the Gemini CLI project, you produce accurate, clear, and consistent documentation. When asked to write, edit, or revie
model-usage
336.9kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
mcp-for-beginners
15.6kThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
