Camwatch is an open-sourced project focused on detecting faces and cars from video streams using computer vision technologies. It is primarily written in Python and uses OpenCV to capture video streams from IP cameras, USB cameras, and video files. It detects faces and cars, and can be trained to recognise faces from image files. It also detects and OCR car number plates. It publishes events and snapshots to MQTT, integrates with Home Assistant and is designed to run on containers for ease of deployment and integration into various environments.
Background
Dissatisfied with my Ring doorbell’s limitations, I found the perfect opportunity over my 2020 Christmas break, amidst COVID-19 self-isolation, to channel my energies into creating something superior. This period of solitude allowed me to dive deep into computer vision technologies, leading to the birth of CamWatch. It was a project driven by a personal need for enhanced security, but it quickly evolved into a comprehensive system capable of detecting faces and vehicles with remarkable accuracy. This journey was not just about improving my own home security but about pushing the boundaries of what’s possible with current technology. The application of Camwatch can range from security and surveillance to traffic management and analysis, offering real-time detection capabilities that can enhance monitoring and safety measures in different settings.
Potential Use Cases
Potential use cases for Camwatch include enhancing security systems by automatically detecting unauthorised access or identifying vehicles in restricted areas. It could also be used in traffic management systems to monitor and analyse vehicle flow or in public spaces to improve safety by detecting suspicious behaviours. Additionally, retail businesses could employ it for customer analytics or to enhance parking lot security.
Design Architecture
Camwatch’s design with modularity in mind allows for future expansions to integrate additional computer vision machine learning models. This flexibility means that it can adapt to new requirements or improvements in computer vision technology, enhancing its capabilities in face and car detection and potentially extending to other areas like object recognition, anomaly detection, and more, thereby increasing its applicability in various domains such as security, traffic management, retail analytics, and beyond.
For more specific applications and technical details, please refer to the Camwatch GitHub repository .

Features
- Records video on motion detection
- Detect faces and cars
- Train recognising faces from image files
- Detect and OCR Car Number plates
- Publish events and snapshots to MQTT
- integration with Home Assistant
- extensive user configurable parameters for tuning video sources to correct false positives
- designed to run on containers for ease of deployment and integration into various environments
Quick Start Guide
Installation
git clone https://github.com/joelee/camwatch.git
cd camwatch
python -m pip install -r requirements.txt
Configuration
cp config/camwatch-quick_start.yaml config/camwatch.yaml
- Edit and customise
config/camwatch.yaml
- see
camwatch-defaults.yaml
for more settings
Start monitoring a video channel
python src/capture.py {channel_name}
Start face recognition training
- Set the path of your training data in the configuration:
services.face_recognition.location
- Add the face photos under named sub-folders, e.g.:
john/
john_photo1.jpg
john_photo2.jpg
jill/
jill_photo1.jpg
jill_photo2.jpg
- Start trainer:
python src/face_trainer.py