Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Raspberry Pi By Example

You're reading from   Raspberry Pi By Example Start building amazing projects with the Raspberry Pi right out of the box

Arrow left icon
Product type Paperback
Published in Apr 2016
Publisher
ISBN-13 9781785285066
Length 294 pages
Edition 1st Edition
Languages
Arrow right icon
Author (1):
Arrow left icon
Arush Kakkar Arush Kakkar
Author Profile Icon Arush Kakkar
Arush Kakkar
Arrow right icon
View More author details
Toc

Table of Contents (17) Chapters Close

Preface 1. Introduction to Raspberry Pi and Python FREE CHAPTER 2. Minecraft Pi 3. Building Games with PyGame 4. Working with a Webcam and Pi Camera 5. Introduction to GPIO Programming 6. Creating Animated Movies with Raspberry Pi 7. Introduction to Computer Vision 8. Creating Your Own Motion Detection and Tracking System 9. Grove Sensors and the Raspberry Pi 10. Internet of Things with the Raspberry Pi 11. Build Your Own Supercomputer with Raspberry Pi 12. Advanced Networking with Raspberry Pi 13. Setting Up a Web Server on the Raspberry Pi 14. Network Programming in Python with the Pi A. Newer Raspberry Pi Models Index

Motion detection and tracking


We will now build a sophisticated motion detection and tracking system with simple logic to find the difference between subsequent frames from a video feed, such as a webcam stream and plotting contours around the area where the difference is detected.

Let's import the required libraries and initialize the webcam:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

We will need a kernel for the dilation operation that we will create in advance rather than creating it every time in the loop:

k=np.ones((3,3),np.uint8)

The following code will capture and store the subsequent frames:

t0 = cap.read()[1]
t1 = cap.read()[1]

Now we initiate the while loop and calculate the difference between the frames and convert the output to grayscale for further processing:

while(True):
    
    d=cv2.absdiff(t1,t0)
    
    grey = cv2.cvtColor(d, cv2.COLOR_BGR2GRAY)

The output will be as follows, and it shows difference of pixels between the frames:

This image might contain some noise...

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime