Spaces:
Running
Running
class Processor: | |
def __init__(self): | |
self.attributes = [] | |
def process_frame(self, frame, tracked_obj): | |
""" | |
Process tracked objects to extract interesting features. | |
:param frame: OpenCV image. | |
:param tracked_obj: List with the objects to be processed. | |
""" | |
raise NotImplementedError() | |
def plot_features(self, image, features, plotter, show_attributes): | |
""" | |
Visualize objects detected in the input image. | |
:param image: OpenCV image. | |
:param features: List of object features detect after processing the frame. | |
:param plotter: Plotter interface. | |
:param show_attributes: Selected object attributes to be displayed. | |
""" | |
raise NotImplementedError() | |
class EmptyProcessor(Processor): | |
def __init__(self): | |
super().__init__() | |
def process_frame(self, frame, tracked_obj): | |
return tracked_obj | |
def plot_features(self, image, features, plotter, show_attributes): | |
return image | |
class ProcessorsGroup(Processor): | |
def __init__(self): | |
super().__init__() | |
self.group = [] | |
def process_frame(self, frame, tracked_obj): | |
for elem in self.group: | |
tracked_obj = elem.process_frame(frame, tracked_obj) | |
return tracked_obj | |
def plot_features(self, image, features, plotter, show_attributes): | |
for elem in self.group: | |
image = elem.plot_features(image, features, plotter, show_attributes) | |
return image | |
def add_processor(self, processor): | |
self.group.append(processor) | |
self.attributes += processor.attributes | |
def get_number_of_processors(self): | |
return len(self.group) | |