-
Notifications
You must be signed in to change notification settings - Fork 2
/
background_subtraction.py
34 lines (24 loc) · 1.11 KB
/
background_subtraction.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import numpy as np
import cv2
from config import config
class BackgroundSubtractor:
subtractor = None
def __init__(self):
self.subtractor = cv2.createBackgroundSubtractorMOG2()
self.subtractor.setHistory(config.getint('HISTORY'))
self.subtractor.setDetectShadows(config.getboolean('DETECT_SHADOWS'))
self.subtractor.setShadowThreshold(config.getfloat('SHADOW_THRESHOLD'))
self.subtractor.setShadowValue(0)
self.subtractor.setNMixtures(config.getint('N_MIXTURES'))
def apply(self, frame):
blurred_frame = np.copy(frame)
blurred_frame = cv2.morphologyEx(blurred_frame,
cv2.MORPH_DILATE,
cv2.getStructuringElement(
cv2.MORPH_RECT,
(2, 2)),
iterations=1)
# Aplico la deteccion de fondo, esto tiene en cuenta el o los frames
# previamente cargados
fgmaskknn = self.subtractor.apply(blurred_frame)
return fgmaskknn