Raspberry Pi Smart Security Camera
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.
- 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:
Cat face detection
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
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
from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage
Saving email addresses
If you don't wand to specify email addresses each time you run the app you can save them in
# 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..
Running the Program
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
<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.