Introduction: Home Security System With Computer Vision

I always wanted to create a system which can exchange an expensive security system with monthly costs and I always wanted to use my Raspberry Pi for some useful tasks. This is why I ordered the cheapest webcamera from Ebay and started my Home Security Project.

I am a Computer Vision and Deep Learning enthusiast so I used this knowledge just to only use a WebCamera for a project like this.

With this project you can easily make your home more secure when you are not at home! It is cheap and you only need a Raspberry Pi and a simple (cheap) WebCamera!

Blog Post about the project

Github repo

Let's get to it! :)

Step 1: What You Will Need

We will need a few things:

  • Raspberry Pi - I use Raspberry Pi 2 B but any type is okay
  • Simple Usb WebCamera - we will connect this to the Pi
  • Internet connection
    • Ethernet cable or Wifi dongle - just make sure your Pi is connected to the internet

That's it, we can go to the next step.

Step 2: Prepare the Pi

  1. Connect the webcamera to it.
  2. Turn the Pi on
  3. Make sure that it is connected to the internet

We will use Python 2.7 (default for Raspberry Pi) but the project is made for Python 3.5 so if you would like to you can use that! This makes things easier.

Now you have to install OpenCV. This library is responsible for the computer vision tasks. The code will work with both OpenCV 2 and OpenCV 3. (Just type the commands line by line in the terminal.)
You can find really good install instructions here for Pi 3 and here for Pi 2 or you can follow my simple easy install (disadvantage: this is a really old version).

This is how you can install OpenCV 2.4.9:

sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get install -y python-pip
sudo pip install numpy
sudo apt-get install libopencv-dev python-opencv

Now we need Pyrebase. This module is required to use Firebase.

sudo pip install pyrebase

Flask is needed too. This is required to create the webpage for the user interactions.

sudo pip install flask

Now, we are done!

Step 3: Create Firebase Project

We need to create a Firebase project in order to use our Home Security System. With Firebase we are able to authenticate users and store captured images. We capture images when we detected motion with the camera. So only those can access and START or STOP the system who you give permission to.

  1. Go to
  2. Create a new Project (I named it Home Security)
  3. Setup Authentication:
    1. Enable Email/Password user authentication (Under Sing-in Method)
    2. Add users (for yourself, your mom, dad, etc...) - They will be able to start or stop the security system
  4. Save apiKey, authDomain, databaseURL, storageBucket, messagingSenderId

Now you have everything, so we can start coding. Best part. ;)

Step 4: Coding!!!

Okay..., we won't code the whole thing from scratch because that would not be a small job. So this is why I created a Github Repo where you can find the code for the project. If you are brave enough or you are adventurous you can modify the code and experiment with it. I encourage you to play with the code.

Okay, so here you can find the repo. You have to options: if you are familiar with Git, you can clone it. Or you can download it and extract it. That's easy.
If you don't know what is cloning on Git or what is Git, check out this tutorial. I think it is really useful and you can learn a lot of things.

After you downloaded or cloned the repo:

I would like to talk just a little about the Image Processing/Computer Vision part because that is really interesting. So basically this security system is a motion detector. We can detect motion with computer vision algorithms. I wrote a blog post about this. You can read it here. I also uploaded the image processing images here, so you can easily understand what is going on in the "brain" of the system.

Do you remember that you savedapiKey, authDomain, databaseURL, storageBucket, messagingSenderId from you newly created Firebase Project? Now we will need it, because you have to update the config.ini file.
For example: (just replace <your_...> parts)

apiKey : your_key
authDomain : your_domain
databaseURL : your_database_url
storageBucket : your_stotage_bucket
messagingSenderId : your_messaging_sender_id

After this you can test it!

Step 5: Test Your System

As I said, now it is time for testing.

Navigate to the folder where you can find
This is the main script, so you have to run this in order to start the whole system.

Get Pi's ip address

We will need the Pi's ip, so we will be able to reach the login page from a different device.

sudo ifconfig

For example my Pi's ip is: (I will use this)


  • Pi is connected to the internet
  • WebCamera is connected to the Pi
  • Firebase project is ready
  • You updated config.ini

Now run it and let's see what happens!


After that you can reach the System from your phone! It has started! :)
Just go to your phone's browser and go to: (The format should be: your_pi_ip_address:5000).
This works with everything as long as it is connected to your LAN and which has a browser because we just interact with a simple webpage.

You should see something like I included in the picture. That's my phone's browser.

After you login and start the system, try walking in front of the camera which is connected to the Pi. After that check out your Firebase Project's Storage. You will find the photos there when it detected movement!
You can also modify the script so it can notify you via Slack, Facebook, Email messages when it detected something. (in my github repo I wrote about that which I won't include here because that's another story)

Hooorrraaayyyy! That's it! You have a fully working Home Security System for just a price of a Raspberry Pi!

Step 6: Side Note

This project is made for Rapberry Pi, but if you would like to, you can test in on your laptop, PC, etc...

You only need to follow the steps which you can find in the Github repo's README (under the source codes).

And if you like the results, you can use your Raspberry Pi for an actual Home Security System!

Microcontroller Contest 2017

Participated in the
Microcontroller Contest 2017