Ubuntu – How to choose the Zoom virtual background feature using Ubuntu

18.04backgroundzoom-meeting

I have installed the Zoom Desktop Client for Linux on Ubuntu 18.04.
I would like to use the Virtual Background feature, but I do not know how to activate it.

My Zoom Linux Client Version is 3.5.385850.0413 and my laptop also meet the processor requirements (Dual Core 2Ghz or Higher (i5/i7 or AMD equivalent) processor)
Virtual Background – Zoom Help Center

Edit for clarification: I know this Zoom feature only works on Linux with a physical green screen. At the moment I do not get any message that I should put a green scree, I do not have that option at all. So even having a green screen I would not be able to use this feature.

Best Answer

As of writing this, Zoom does not support person/face-detection based virtual background in their Linux-version software. The solution below helps achieve the similar effect, and since it creates a virtual webcam, you can most likely use this solution for any apps that use a webcam, for example, Microsoft Teams. These instructions were originally posted by @BenTheElder, and IMO is a super fun and neat project, especially if you are into computer vision. https://elder.dev/posts/open-source-virtual-background/

What the code is doing essentially is grabbing image frames with Python and OpenCV. For each image, the face/body is cropped using TensorFlow.js Bodypix, and merged with the specified background. The modified images are then used to create the video feed via pyfakewebcam and v4l2loopback. I have tested the below instructions with Ubuntu 20.04, code used is archived in https://github.com/pangyuteng/virtual-background

branch master requires GPU, while branch cpu-friendly uses only CPU.

EDIT: after getting the below to work, I also found out there is a more refined version by fangfufu https://github.com/fangfufu/Linux-Fake-Background-Webcam which is also based on @BenTheElder's solution.

--

docker run --gpus all nvidia/cuda:10.0-base nvidia-smi
  • install and setup virtual video device as "/dev/video20", and assuming the actual video device is "/dev/video0"
sudo apt-get upgrade -y
sudo apt-get install -y v4l2loopback-dkms v4l2loopback-utils

sudo modprobe -r v4l2loopback
sudo modprobe v4l2loopback devices=1 video_nr=20 card_label="v4l2loopback" exclusive_caps=1
  • add root to group video (likely unecessary...)
sudo usermod -aG video root
cat /etc/group | grep video
  • clone repo
git clone git@github.com:pangyuteng/virtual-background.git vbkgd
cd vbkgd
  • (for those using CPU) switch branch.
git checkout cpu-friendly
  • build containers
docker-compose build
  • (optional) adjust camera resolution and fps in docker-compose.yml
  • start the virtual camera via docker-compose (assuming physical video device at /dev/video0, virtual video device at /dev/video20 and gpu at /dev/nvidia0)
docker-compose up
  • launch zoom/teams/slack..., select v4l2loopback as webcam

  • live swap background by replacing file data/background.jpg - refresh rate hard coded at 3 seconds.

Related Question