Need help with cam_board?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

172 Stars 6 Forks GNU General Public License v3.0 136 Commits 3 Opened issues


Turn web cam into a black / white board

Services available


Need anything else?

Contributors list


Point your laptop web cam at a piece of paper and the program will stretch the writable area over the whole screen.

Video demonstrating some of the new features and improvements available here.


  • python 3
  • opencv (with the
    module), numpy


Prepare paper

For camera aspect ratio 16:9 print: - toprint/a416by9.pdf or toprint/a416by9.svg on A4 paper - toprint/a416by9_tiny.pdf or toprint/a416by9_tiny.svg on A4 paper. Uses tiny markers, for high resolution cameras. - toprint/a416by9tinyinside.pdf or toprint/a416by9tinyinside.svg on A4 paper. Uses tiny markers, for high resolution cameras. The 16:9 ratio is inside the markers (see the "r" key binding below). - toprint/letter16by9.pdf or toprint/letter16by9.svg on letter paper

For camera aspect ratio 4:3 print: - toprint/a44by3.pdf or toprint/a44by3.svg on A4 paper - toprint/letter4by3.pdf or toprint/letter4by3.svg on letter paper

The small circle marks the top left part of the page. If the aspect ratio of your web cam is different from 16:9 or you want to use paper with a different size see custom page

Setup web cam

Tilt your web cam so that all 4 ARUCO markers are in it's field of view.

IMPORTANT: To use the script with Zoom, Skype, MS Teams, ... Disable the camera in these programs first, before running the script. Otherwise a "camera busy" error will be thrown.

Run cam_board

In the terminal navigate to the cam_board directory.

  • To launch the script:

     $ ./cam_board 
  • To display command line options:

     $ ./cam_board -h

Key bindings

  • "q" - quit
  • "s" - save screen to PNG files to create slide show
    • the names are chosen automatically 0001.png, 0002.png, ...
    • by default the files are saved in the current working directory
  • "a" - smooth the image by calculating an average of recent frames on / off
  • "i" - invert image on / off
  • "d" - de-noise on / off
  • "l" - de-noise with colors on / off
  • "w" - warp camera image to ARUCO markers on / off
  • "k" - apply sharpening kernel on / off
  • "p" - freeze image on / off
  • "r" - warp the inside of the markers on / off
  • "f" - full screen mode / windowed mode

Adjust the configuration file

Edit arucocamconfig to change settings.

Custom page

You can make your own marker page with the markers from to_print/symbols. They should be placed in corners of a rectangle that matches the aspect ratio of your web cam. Careful: the orientation of the symbols is important and they might require rotation - see a4.svg for reference.

Conserve printer ink / toner

  • tape one printout with the 4 markers to desk surface (make sure the circle is positioned correctly and use tape that can later be removed from the desk surface without damaging it)
  • once the script recognizes the 4 ARUCO markers and stretches them to the whole screen place a blank sheet of paper over the taped printout
  • if the camera moves, remove any paper covering the printout and the program will recalculate how to warp the camera image

Better resolution at the bottom

  • laptop stands that allow tilting might help position the camera more perpendicular to the printout with markers resulting in better resolution at the bottom of the printable area
  • manipulating the position of the laptop might damage it, be careful :-)

Python version error

In some linux distributions python 3 is the default. If that is not the case on your system you can: - adjust the first, hashbang, line of cam_board or ... - ... run through python 3:

 $ python3 ./cam_board


  • ArUco markers made using this
  • This is a simple script bodged togather from various opencv tutorials, here is a good place to start
  • Sharpening kernel see wiki and this

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.