Project Icon

speed-camera

基于计算机视觉的开源运动目标速度测量系统

speed-camera是一个基于Python和OpenCV的开源运动目标速度测量系统。它支持树莓派、Windows和Unix平台,兼容多种摄像头,可自动检测和跟踪画面中最大移动物体并计算速度。系统提供灵活配置、数据记录和Web界面,适用于交通监控等场景。此外还集成了数据分析、图表生成等管理工具,方便用户进行后续处理。

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

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

For Details See Program Features, Wiki Instructions and YouTube Videos.

Note re Bullseye:

Speed-cam.py ver 11.26 and greater will now run under Raspberry Pi OS Bullseye or later with a pi camera module as well as usbcam and IP/RTSP cameras. For picamera support Run sudo raspi-config, Interface Options, then enable/disable Legacy Camera option and reboot.

RPI Quick curl Install or Upgrade

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

Step 1

Press GitHub copy icon on right side of code box below.
or With mouse left button highlight curl command in code box below. Right click mouse in highlighted area and select Copy.

curl -L https://raw.github.com/pageauc/speed-camera/master/speed-install.sh | bash

Step 2

On RPI putty SSH or terminal session right click, select paste then Enter to download and run script.

This will download and run the speed-install.sh script. If running under python3 you will need opencv3 installed if not installed. If you need to compile openCV see my Github Repo at menu driven compile opencv3 from source project

Ver 13.00 Notes

Version 13.05 is a major speed camera revision. Camera thread code is now handled by a strmcam.py module. config.py variable names have changed so you will need to backup and cp config.py.new config.py (see below for details)
IMPORTANT : All settings are in config.py. You can delete configcam.py if it exists, once you upgrade to ver 13.05 or greater. plugins now work. You can customize plugin files to suit you needs or create your own. If you are upgrading you should delete, move old plugins so new ones will be downloaded during UPGRADE. Please post GitHub issue if you find a bug or problem. Claude

IMPORTANT speed-cam.py ver 8.x or greater Requires Updated config.py and plugins.

cd ~/speed-camera
cp config.py config.py.bak
cp config.py.new config.py

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 menubox.sh UPGRADE menu pick.

Mac or Windows Systems

See Windows 10/11 or Apple Mac Docker Install Quick Start
or Windows or Unix Distro Installs without Docker

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 config.py file. Motion detection is restricted between MO_CROP_Y_UPPER, MO_CROP_Y_LOWER, MO_CROP_X_LEFT, MO_CROP_X_RIGHT variables (road or area of interest). MO_CROP_AUTO_ON = True overrides manual settings and will Auto calculate a rough crop area based on image size. Motion Tracking is controlled by the MO_TRACK_EVENT_COUNT variable in config.py. This sets the number of track events and the track length in pixels. This may need to be tuned for camera view, cpu speed, etc. Speed is calculated based on CAL_OBJ_PX_ and CAL_OBJ_MM_ variables for L2R and R2L motion direction. A video stream frame image will be captured and saved in media/images dated subfolders (optional) per variable IM_SUBDIR_MAX_FILES = 2000 For variable settings details see config.py file.

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. Database setting can be managed from config.py. Database is automatically created from config.py settings. For more details see How to Manage Sqlite3 Database

Admin, Reports, Graphs and Utilities scripts

  • menubox.sh script is a whiptail menu system to allow easier management of program settings and operation.
  • run.sh This bash script uses supervisorctl to manage start, stop, status of speed-cam.py and webserver.py. Configured to autostart eg due to interruption of RTSP stream. See conf files in supervisor folder for details. Note: you must run ./run.sh install to initialize symbolic links to /etc/supervisor/conf.d folder. Stop running any speed-cam and/or websever processes before running ./run.sh start
  • webserver.py Allows viewing images and/or data from a web browser (see config.py for webserver settings)
  • rclone Manage settings and setup for optional remote file sync to a remote storage service like google drive, DropBox and many others.
  • watch-app.sh for administration of settings from a remote storage service. Plus application monitoring.
  • sql-make-graph-count-totals.py Query sqlite database and Generate one or more matplotlib graph images and save to media/graphs folder. Graphs display counts by hour, day or month for specfied previous days and speed over. Multiple reports can be managed from the config.py GRAPH_RUN_LIST variable under matplotlib image settings section.
  • sql-make-graph-speed-ave.py Query sqlite database and Generate one or more matplotlib graph images and save to media/graphs folder. Graphs display Average Speed by hour, day or month for specfied previous days and speed over. Multiple reports can be managed from the config.py GRAPH_RUN_LIST variable under matplotlib image settings section.
  • sql-speed_gt.py Query sqlite database and Generate html formatted report with links to images and save to media/reports folder. Can accept parameters or will prompt user if run from console with no parameters
  • makehtml.py Creates html files that combine csv and image data for easier viewing from a web browser and saved to media/html folder.
  • speed-search.py allows searching for similar target object images using opencv template matching. Results save to media/search folder.
  • alpr-speed.py This is a demo that processes existing speed camera images with a front or back view of vehicle using OPENALPR License plate reader. Output is saved to media/alpr folder. For installation, Settings and Run details see ALPR Wiki Documentaion

Reference Links

Requirements

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.
or
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 https://github.com/pageauc/opencv3-setup

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 Download and Install python and Opencv

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 https://github.com/pageauc/speed-camera 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 http://win-bash.sourceforge.net/ http://www.cygwin.com/ Note: I have Not tested these.

Docker Install Quick Start

speed camera supports a docker installation on
Apple Macintosh per System requirements and Instructions
and
Microsoft Windows 10/11 64 bit with BIOS Virtualization enabled and Microsoft Windows Subsystem for Linux WSL 2 per System requirements and Instructions.

  1. Download and install Docker Desktop for your System
  2. Clone the GitHub Speed Camera repository using green Clone button (top right)
  3. Run docker-compose up from the directory you cloned the repo into.
  4. The Docker container will likely exit because it is using a default config.
  5. Edit the configuration file @ config/config.py
  6. Run docker-compose up per documentation
  7. Run docker build command locally to get a fresh image.

Raspberry pi 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 ~
wget https://raw.github.com/pageauc/speed-camera/master/speed-install.sh
more speed-install.sh       # You can review code if you wish
chmod +x speed-install.sh
./speed-install.sh  # runs install script.

Run to view verbose logging

cd ~/speed-camera    
./speed-cam.py

See How to Run speed-cam.py wiki section

IMPORTANT Speed Camera will start in CALIBRATE_ON = True Mode.
Review settings in config.py file and edit variables with nano as required. You will need to perform a calibration to set the correct value for config.py CAL_OBJ_PX_ and CAL_OBJ_MM_ for L2R and R2L directions. The variables are based on the distance from camera to objects being measured for speed. See Calibration Procedure for more details.

The config.py 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. This will require monitoring the verbose log messages in order to fine tune.

Run menubox.sh

cd ~/speed-camera
./menubox.sh

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

View speed-cam data and trends from web browser per sample screen shots. These can be generated from Menubox.sh menu pick or by running scripts from console or via crontab schedule.

Speed Camera GRAPHS Folder Web Page
Speed Camera REPORTS Folder Web Page
Speed Camera HTML Folder Web Page

You can view recent or historical images directly from the speed web browser page. These are dynamically created and show up-to-date images. Press the web page refresh button to update display Speed Camera RECENT Folder Web Page
Speed Camera IMAGES Folder Web Page

Credits

Some of this code is based on a YouTube tutorial by Kyle Hounslow using C here https://www.youtube.com/watch?v=X6rPdRZzgjg

Thanks to Adrian Rosebrock jrosebr1 at http://www.pyimagesearch.com for the PiVideoStream Class code available on github at https://github.com/jrosebr1/imutils/blob/master/imutils/video/pivideostream.py

Have Fun
Claude Pageau
YouTube Channel https://www.youtube.com/user/pageaucp
GitHub Repo

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号