Spaces:
Runtime error
Runtime error
import cv2 | |
import sys | |
from random import randint | |
TEXTCOLOR = (randint(0, 255), randint(0, 255), randint(0, 255)) | |
BORDERCOLOR = (randint(0, 255), randint(0, 255), randint(0, 255)) | |
FONT = cv2.FONT_HERSHEY_SIMPLEX | |
VIDEO_SOURCE = "videos/people.mp4" | |
BGS_TYPES = ["GMG", "MOG", "MOG2", "KNN", "CNT"] | |
BGS_TYPE = BGS_TYPES[4] | |
# GMG 38 | |
# MOG 28 | |
# MOG2 18 | |
# KNN 16 | |
# CNT 15 | |
def getBGSubtractor(BGS_TYPE): | |
if BGS_TYPE == "GMG": | |
return cv2.bgsegm.createBackgroundSubtractorGMG() | |
if BGS_TYPE == "MOG": | |
return cv2.bgsegm.createBackgroundSubtractorMOG() | |
if BGS_TYPE == "MOG2": | |
return cv2.createBackgroundSubtractorMOG2() | |
if BGS_TYPE == "KNN": | |
return cv2.createBackgroundSubtractorKNN() | |
if BGS_TYPE == "CNT": | |
return cv2.bgsegm.createBackgroundSubtractorCNT() | |
print("Unknown createBackgroundSubtractor type") | |
sys.exit(1) | |
cap = cv2.VideoCapture(VIDEO_SOURCE) | |
bg_subtractor = getBGSubtractor(BGS_TYPE) | |
e1 = cv2.getTickCount() | |
def main(): | |
frame_number = -1 | |
while (cap.isOpened): | |
ok, frame = cap.read() | |
if not ok: | |
print('Finish processing the video') | |
break | |
frame_number += 1 | |
bg_mask = bg_subtractor.apply(frame) | |
res = cv2.bitwise_and(frame, frame, mask=bg_mask) | |
cv2.imshow('Frame', frame) | |
cv2.imshow('Mask', res) | |
if cv2.waitKey(1) & 0xFF == ord("q") or frame_number > 250: | |
break | |
e2 = cv2.getTickCount() | |
t = (e2 - e1) / cv2.getTickFrequency() | |
print(t) | |
main() | |