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()
@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