You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
16 lines
572 B
Python
16 lines
572 B
Python
import cv2
|
|
|
|
def detect_motion(frame, background_frame):
|
|
diff = cv2.absdiff(background_frame, frame)
|
|
gray = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
|
|
blur = cv2.GaussianBlur(gray, (5, 5), 0)
|
|
_, thresh = cv2.threshold(blur, 20, 255, cv2.THRESH_BINARY)
|
|
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
|
|
|
|
moving_objects = []
|
|
for contour in contours:
|
|
if cv2.contourArea(contour) > 500:
|
|
x, y, w, h = cv2.boundingRect(contour)
|
|
moving_objects.append((x, y, w, h))
|
|
return moving_objects
|