Security camera running OpenCV for object and motion detection. The camera will send email with image of any objects it detects. It also runs a server that provides web interface with live stream video.
Informations about:
- Setup
- Installing Dependencies
- Saving email addresses
- Running the Program
are available under the Functionality section.
You can specify receiver's and sender's email address though web interface:
After detecting an object the camera will send an email with image preview.
Email notification | Email with image preview |
---|---|
You can also specify what will trigger the security alert. Here are some examples:
Note that some of the available detectors are experimental and their accuracy leaves a space for a future improvement. Particularly:
- Upper body detection
- Smile detection
- Silverware detection
This project uses a USB Camera to stream video. Before running the code, make sure you have connected a USB Camera to your device.
This project uses openCV to detect objects in the video feed. You can install openCV by using the following tutorial. In this project Python 2.7 version was used.
The installation took about 1-2 hours on Raspberry Pi 3 Model B, but it would be considerably slower on a less powerful board like the Raspberry Pi Zero (it may even take about 8 hours).
The tutorial will prompt you to create a virtual environment. Make sure you are using the virtual environment by typing the following commands
source ~/.profile
workon cv
Next, navigate to the repository directory
cd pi-security-camera
and install the dependencies for the project
pip install -r requirements.txt
Note: If you're running python3, you'll have to change the import statements at the top of the mail_config.py
file
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
If you don't wand to specify email addresses each time you run the app you can save them in secret.py
file.
# Email you want to send the update from (only works with gmail)
from_email = '' # '[email protected]' - must be a gmail account!
from_email_password = '' # 'password'
# Email you want to send the update to:
to_email = '' # '[email protected]'
Replace empty strings - ''
with with your own email/credentials. Application logs into a gmail SMTP server and sends an email with an image of the object detected by the security camera..
Run the program
source ~/.profile
workon cv
python application.py
You can view a live stream by visiting the ip address of your Raspberry Pi in a browser on the same network. You can find the ip address of your Raspberry Pi by typing ifconfig
in the terminal and looking for the inet
or wlan
address.
Visit <raspberrypi_ip>:5000
in your browser to view the stream.
Note: To view the live stream on a different network than your Raspberry Pi, you can use ngrok to expose a local tunnel. Once downloaded, run ngrok with ./ngrok http 5000
and visit one of the generated links in your browser.