Skip to content
A Unix, Windows, Raspberry Pi Object Speed Camera using python, opencv, video streaming, motion tracking. Includes a Standalone Web Server Interface, Image Search using opencv template match and a whiptail Admin Menu Interface Includes picam and webcam Plugins for motion track security camera configuration including rclone sync script. watch-app…
Branch: master
Clone or download
Latest commit 247fe43 May 6, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
plugins Release 9.01 Fix sql idx add tenth of sec. Update plugins Jul 12, 2018
rclone-samples Add -L option to sync so it follows symlinks Mar 27, 2018
.gitattributes 🍭 Added .gitattributes & .gitignore files Oct 11, 2016
.gitignore 🍭 Added .gitattributes & .gitignore files Oct 11, 2016 Added extra comments re windows support Aug 11, 2018 Set web page refresh to 15 minutes Jul 27, 2018 release 6.70 fix crash bug due to using logging instead of print Mar 27, 2018
menubox.png minor update for display of browser url Jul 8, 2018 minor update for display of browser url Jul 8, 2018 Added -L option for sync Mar 27, 2018 Add Remote Configuration Management Feature Jan 21, 2018 release 6.00 Added optional free disk space and subdir creation features Aug 11, 2017 release 5.50 Update Aug 5, 2017 9.09 Fix bugs Aug 10, 2018 Minor Updates Aug 18, 2017 rename file Jul 11, 2018 Update rclone version May 6, 2019
speed_web_gnuplot.png Added some screen shots of web views Jun 29, 2018
speed_web_recent.png Added some screen shots of web views Jun 29, 2018
speed_web_sqlite.png Added some screen shots of web views Jun 29, 2018 Change function name Aug 10, 2018 Release 8.91 Use just sql_speed_gt for query and graph Jun 25, 2018 minor message change Mar 29, 2019 Added cgi webserver (under dev) Jul 1, 2018 9.09 Fix bugs Aug 10, 2018 Update to change default install folder to speed-camera Aug 15, 2017
webserver.txt fix link Aug 19, 2018

SPEED CAMERA - Object Motion Tracker Mentioned in Awesome <INSERT LIST NAME>

RPI, Unix and Windows Speed Camera Using python, openCV, USB Cam or RPI camera module

For Details See Program Features and Wiki Instructions and YouTube Videos

RPI Quick Install or Upgrade

IMPORTANT - A raspbian sudo apt-get update and sudo apt-get upgrade will NOT be performed as part of so it is recommended you run these prior to install to ensure your system is up-to-date.

Step 1 With mouse left button highlight curl command in code box below. Right click mouse in highlighted area and Copy.
Step 2 On RPI putty SSH or terminal session right click, select paste then Enter to download and run script.

curl -L | bash

This will download and run the script. If running under python3 you will need opencv3 installed. See my Github menu driven compile opencv3 from source project

Program Description

This is a raspberry pi, Windows, Unix Distro computer openCV object speed camera demo program. It is written in python and uses openCV to detect and track the x,y coordinates of the largest moving object in the camera view above a minimum pixel area. User variables are stored in the file. Motion detection is restricted between y_upper, y_lower, x_left, x_right variables (road or area of interest). If a track is longer than track_len_trig variable then average speed will be calculated based on cal_obj_px and cal_obj_mm variables and a speed photo will be taken and saved in media/images dated subfolders per variable imageSubDirMaxFiles = 1000 (see

If log_data_to_CSV = True then a speed-cam.csv file will be created/updated with event data stored in CSV (Comma Separated Values) format. This can be imported into a spreadsheet, database, Etc program for further processing. Release 8.9 adds a sqlite3 database to store speed data. Default is data/speed_cam.db with data in the speed table . there is a simple report that can query for records with greater than a specified speed. I plan on doing more but this should be a good start. Take a look at the code for details.

Also included are

  • script is a whiptail menu system to allow easier management of program settings and operation.
  • rclone for optional remote file sync to a remote storage service like google drive, DropBox and many others.
  • for administration of settings from a remote storage service. Plus application monitoring.
  • allows searching for similar target object images using opencv template matching.
  • creates html files that combine csv and image data for easier viewing from a web browser. (Does not work with or plugins enabled.
  • Allows viewing images and/or data from a web browser (see for webserver settings)
  • Prompts for a speed value and runs a simple sqlite3 query to show all record that exceed the specified speed. Output can be found in media/reports folder and is available from browser.
  • Run report for count by hour. also produces a graph using gnuplot. Query output html report and .png graph can be found in media/reports folder and is available from browser.


Raspberry Pi computer and a RPI camera module installed or USB Camera plugged in. Make sure hardware is tested and works. Most RPI models will work OK. A quad core RPI will greatly improve performance due to threading. A recent version of Raspbian operating system is Recommended.
MS Windows or Unix distro computer with a USB Web Camera plugged in and a recent version of python installed For Details See Wiki details.

It is recommended you upgrade to OpenCV version 3.x.x For Easy compile of opencv 3.4.2 from source See

Windows or Non RPI Unix Installs

For Windows or Unix computer platforms (non RPI or Debian) ensure you have the most up-to-date python version. For Downloads visit

The latest python versions includes numpy and recent opencv version that is required to run this code. You will also need a USB web cam installed and working. To install this program access the GitHub project page at Select the green Clone or download button. The files will be cloned or zipped to a speed-camera folder. You can run the code from python IDLE application (recommended), GUI desktop or command prompt terminal window. Note bash .sh shell scripts will not work with windows unless special support for bash is installed for windows Eg Note I have Not tested these.

IMPORTANT ver 8.x or greater Requires Updated and plugins.

cd ~/speed-camera

To replace plugins rename (or delete) plugins folder per below

cd ~/speed-camera
mv plugins pluginsold   # renames plugins folder
rm -r plugins           # deletes plugins folder

Then run UPGRADE menu pick.

Manual Install or Upgrade

From logged in RPI SSH session or console terminal perform the following. Allows you to review install code before running

cd ~
more       # You can review code if you wish
chmod +x
./  # runs install script.

Run to view verbose logging

cd ~/speed-camera    

See How to Run wiki section

IMPORTANT Speed Camera will start in calibrate = True Mode.
Review settings in file and edit variables with nano as required. You will need to perform a calibration to set the correct value for cal_obj_px and cal_obj_mm variables based on the distance from camera to objects being measured for speed. See Calibration Procedure for more details.

The motion tracking variable called track_counter = can be adjusted for your system and opencv version. default is 5 but a quad core RPI3 and latest opencv version eg 3.4.2 can be 10-15 or possibly greater.


cd ~/speed-camera

Admin speed-cam Easier using (Once calibrated and/or testing complete)
menubox main menu

View speed-cam data and trends from web browser per sample screen shots

Speed Camera Web Recent View
Speed Camera Web html speed list Report
Speed Camera Web Recent View



Some of this code is based on a YouTube tutorial by Kyle Hounslow using C here

Thanks to Adrian Rosebrock jrosebr1 at for the PiVideoStream Class code available on github at

Have Fun
Claude Pageau
YouTube Channel
GitHub Repo

You can’t perform that action at this time.