Working demo video here
To ask doubts and staying in touch , join our gitter channel
- This is a security camera software which detects any intruder and alerts the owner .
- This is the basic prototype , we'll make it un-hack-able by using microphone and eliminating every possible hack to fool our software.
- Many issues are up-for-grabs. Check them out from issues tab.
Python 3.6
Opencv (cv2)
tutorial
We take a snapshot of the room , lets call this base.jpg
. Now , the code continuously scan the current frame and subtract it from base.jpg
.
If the difference is more than a threshold , we'll consider a breach happening.
- Detects any kind of unwanted movements or disturbances in the surroundings.
- Capable of differentiaing day and night or darkness in the surroundings.
- The program is integrated with automatic recording feature whenever it detects darkness or lights being off. So that when the camera can not identify intruders in dark the sound can be recorded, making the camera foolproof.
- The program automatically clicks snapshot and saves the image as 'image.jpg' which show maximum movement in it's complete cycle.
- Installation of all the required depedencies is completed first. Setup
- The code is made to run via terminal/IDE. Running
- Sequence of code:
- The Graphical user interfaces initializes. When user presses
Run
button the main program executes in a new window. - The code first initializes a three seconds waiting camera window.
- The main code runs to detect movements and record the complete video footage.
- The code is also capable of detecting darkness in the surroundings, by calculating the average brightness by overall pixels of a frame. It indicates the user whenever it finds surroundings getting dark.
- Whenever the program detects darkness it initializes the microphone to record the audio in the region.
- The code takes snapshot of the frame with maximum movement count as
image.jpg
during it's complete execution cycle. - All the configurations of the video clip are recorded (like Date and Time, camera fps, maximum object movement recorded at a time, duration, etc.)
- The video clip saved as
basic_motion_detection.avi
and the audio asaudio.wav
. - The GUI makes confirmation for saving the config file.
- The configuration data like camera fps, duration of running, maximum object recorded, video file location is saved in
config.txt
for future reference. - Finally the code terminates with the termination of the main GUI window.
- The Graphical user interfaces initializes. When user presses
- To install the required packages use the following command in command prompt[windows] OR terminal[Unix]
sudo python3 setup.py install
Packages can also be installed using pip-install Tutorial.
- Install imageAI
pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.2/imageai-2.0.2-py3-none-any.whl
- Download the RetinaNet model file that will be used for object detection via this link.
If there be any issue please check out imageAI.
- For object detection over video install files from the link
Note: Save the downloaded files in PythonCode
directory.
- Windows: Open up
gui.py
in your preferred python IDE - Linux: Open the terminal in the
PythonCode
directory, copy the codepython3 gui.py
and run it. - More formally , fork the code , and clone it your machine . I recommend that you use the GitHub desktop app.
- If you need a python IDE , I recommend using pycharm. Tutorial to install !.
- If you get an error , make sure all the import statements are working (required packages are installed)
Command (with PythonCode
as the working directory):
python3 gui.py
- Open up
gui.py
in your preferred python IDE UltimateSecurityCam.py - Open up
gui.py
in your preferred python IDE UltimateSecurityCam.py or run on command prompt using the command (inPythonCode
directory) run the commandpython3 gui.py
. - Run using python 3.6 (recommended).
- The program takes 3-second waiting time, after that it starts detecting motion , making an alert sound.
Many improvements and developments are in the pipeline! To know more, contact on github or niteshx22@gmail.com
Found a bug, please create an issue
Made with ❤ by Nitesh Chaudhry