Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save pknowledge/623515e8ab35f1771ca2186630a13d14 to your computer and use it in GitHub Desktop.
Save pknowledge/623515e8ab35f1771ca2186630a13d14 to your computer and use it in GitHub Desktop.
Motion Detection and Tracking Using Opencv Contours
import cv2
import numpy as np
cap = cv2.VideoCapture('vtest.avi')
frame_width = int( cap.get(cv2.CAP_PROP_FRAME_WIDTH))
frame_height =int( cap.get( cv2.CAP_PROP_FRAME_HEIGHT))
fourcc = cv2.VideoWriter_fourcc('X','V','I','D')
out = cv2.VideoWriter("output.avi", fourcc, 5.0, (1280,720))
ret, frame1 = cap.read()
ret, frame2 = cap.read()
print(frame1.shape)
while cap.isOpened():
diff = cv2.absdiff(frame1, frame2)
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (5,5), 0)
_, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)
dilated = cv2.dilate(thresh, None, iterations=3)
contours, _ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
(x, y, w, h) = cv2.boundingRect(contour)
if cv2.contourArea(contour) < 900:
continue
cv2.rectangle(frame1, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.putText(frame1, "Status: {}".format('Movement'), (10, 20), cv2.FONT_HERSHEY_SIMPLEX,
1, (0, 0, 255), 3)
#cv2.drawContours(frame1, contours, -1, (0, 255, 0), 2)
image = cv2.resize(frame1, (1280,720))
out.write(image)
cv2.imshow("feed", frame1)
frame1 = frame2
ret, frame2 = cap.read()
if cv2.waitKey(40) == 27:
break
cv2.destroyAllWindows()
cap.release()
out.release()
@omarsherif99
Copy link

hey there, does anyone know how to get the centroids of the boxes

@FavourChianumba
Copy link

Ive got Error. Please help
Cant run this code
`Traceback (most recent call last):
File "/home/mihuzz/PycharmProjects/CV2/bas.py", line 15, in
print(frame1.shape)
AttributeError: 'NoneType' object has no attribute 'shape'

Process finished with exit code 1
`

I am having the same problem, are there any solutions

@mayurmoundekar5
Copy link

Hello,
I have a query. In this video, there is a No one is present in the video or No one Movement in the video.
So what code do I write for the No movement
I used lots of if statements in this code but is the problem is No Movement only 1-time display.

Simple I want to create Present or absent in the screen. I case the user left the screen so display Absent or User arrived so display Prenet

Can you Please Help Me

@Geeky-star
Copy link

Ive got Error. Please help
Cant run this code
`Traceback (most recent call last):
File "/home/mihuzz/PycharmProjects/CV2/bas.py", line 15, in
print(frame1.shape)
AttributeError: 'NoneType' object has no attribute 'shape'

Process finished with exit code 1
`

It does not run in my Python IDE also. It is not capturing any video that's why frame has None values and None does not have any shape.

@Svshah111
Copy link

print(frame1.shape)

AttributeError: 'NoneType' object has no attribute 'shape'

@Jjukkka
Copy link

Jjukkka commented Apr 5, 2022

Ive got Error. Please help
Cant run this code
Traceback (most recent call last): File "/home/mihuzz/PycharmProjects/CV2/bas.py", line 15, in print(frame1.shape) AttributeError: 'NoneType' object has no attribute 'shape' Process finished with exit code 1

I am having the same problem, are there any solutions

Ive got Error. Please help
Cant run this code
Traceback (most recent call last): File "/home/mihuzz/PycharmProjects/CV2/bas.py", line 15, in print(frame1.shape) AttributeError: 'NoneType' object has no attribute 'shape' Process finished with exit code 1

It does not run in my Python IDE also. It is not capturing any video that's why frame has None values and None does not have any shape.

print(frame1.shape)

AttributeError: 'NoneType' object has no attribute 'shape'

For some reason when I change video source file to be mp4 it works. avi file gives me this error
cap = cv2.VideoCapture('filename.mp4')

@Akaspreet
Copy link

whenever I run the code it work properly but the video I get as Output i.e. saved in my working directory not running as I tried both .avi and .mp4 format. Please help me to do so and run the output video
Screenshot (116)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment