Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/HackerShackOfficial/Smart-Security-Camera
IoT security camera running open-cv for object detection 📹
https://github.com/HackerShackOfficial/Smart-Security-Camera
Last synced: 3 months ago
JSON representation
IoT security camera running open-cv for object detection 📹
- Host: GitHub
- URL: https://github.com/HackerShackOfficial/Smart-Security-Camera
- Owner: HackerShackOfficial
- Created: 2017-09-13T06:37:21.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-04-27T20:55:03.000Z (over 5 years ago)
- Last Synced: 2024-05-18T20:30:23.400Z (6 months ago)
- Language: Python
- Homepage:
- Size: 287 KB
- Stars: 557
- Watchers: 61
- Forks: 276
- Open Issues: 36
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Smart-Security-Camera
IoT Raspberry Pi security camera running open-cv for object detection. The camera will send an email with an image of any objects it detects. It also runs a server that provides a live video stream over the internet.[Watch the original video here](https://youtu.be/Y2QFu-tTvTI)
## Setup
This project uses a Raspberry Pi Camera to stream video. Before running the code, make sure to configure the raspberry pi camera on your device.
Open the terminal and run
```
sudo raspi-config
```Select `Interface Options`, then `Pi Camera` and toggle on. Press `Finish` and exit.
You can verify that the camera works by running
```
raspistill -o image.jpg
```
which will save a image from the camera in your current directory. You can open up the file inspector and view the image.## Installing Dependencies
This project uses openCV to detect objects in the video feed. You can install openCV by using the following [tutorial](http://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/). I used the Python 2.7 version of the tutorial.
The installation took almost 8 hours (!!) on my Raspberry Pi Zero, but it would be considerably faster on a more powerful board like the Raspberry Pi 3.
The tutorial will prompt you to create a virtual environment. Make sure you are using the virtual environment by typing the following commands
```bash
source ~/.profile
workon cv
```Next, navigate to the repository directory
```
cd Smart-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.py file*
```
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
```
*and change your print statements from quotes to parenthesis*```
print "" => print()
```## Customization
To get emails when objects are detected, you'll need to make a couple modifications to the `mail.py` file.
Open `mail.py` with vim `vim mail.py`, then press `i` to edit. Scroll down to the following section
```
# Email you want to send the update from (only works with gmail)
fromEmail = '[email protected]'
fromEmailPassword = 'password1234'# Email you want to send the update to
toEmail = '[email protected]'
```
and replace with your own email/credentials. The `mail.py` file logs into a gmail SMTP server and sends an email with an image of the object detected by the security camera.Press `esc` then `ZZ` to save and exit.
You can also modify the `main.py` file to change some other properties.
```
email_update_interval = 600 # sends an email only once in this time interval
video_camera = VideoCamera(flip=True) # creates a camera object, flip vertically
object_classifier = cv2.CascadeClassifier("models/fullbody_recognition_model.xml") # an opencv classifier
```
Notably, you can use a different object detector by changing the path `"models/fullbody_recognition_model.xml"` in `object_classifier = cv2.CascadeClassifier("models/fullbody_recognition_model.xml")`.to a new model in the models directory.
```
facial_recognition_model.xml
fullbody_recognition_model.xml
upperbody_recognition_model.xml
```## Running the Program
Run the program
```
python main.py
```You can view a live stream by visiting the ip address of your 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` address.
Visit `: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](https://ngrok.com/) to expose a local tunnel. Once downloaded, run ngrok with `./ngrok http 5000` and visit one of the generated links in your browser.
Note: The video stream will not start automatically on startup. To start the video stream automatically, you will need to run the program from your `/etc/rc.local` file see this [video](https://youtu.be/51dg2MsYHns?t=7m4s) for more information about how to configure that.