from context import PP_Context import cv2 as vision class PP_Frame_Context(PP_Context): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self._frame_init_value() def _frame_init_value(self): self.get_or_set("moviefile", 0) self.get_or_set("width", None) self.get_or_set("height", None) self.get_or_set("savename", "saved") self.get_or_set("color", True) self.get_or_set("hide", False) self.get_or_set("run", True) self.get_or_set("current_frame", None) class PP_Frame(object): def __init__(self, frame, context=None): if isinstance(context, PP_Frame_Context): self.context = context elif isinstance(context, dict): self.context = PP_Frame_Context(context) else: self.context = PP_Frame_Context() self.color = self.context.get_or_set("color", True) self.blur = self.context.get_or_set("gblur", False) self.frame_rgb = frame self.frame_gray = vision.cvtColor(frame, vision.COLOR_BGR2GRAY) if self.blur: self._init_gblur() @property def data(self): if self.color: return self.frame_rgb return self.frame_gray def gaussian_blur(self, ksize=(5,5), sigmaX=0, dst=None, sigmaY=None, borderType=None, hint=None): if self.color: self.frame_rgb = vision.GaussianBlur(self.frame_rgb, (5,5), 0, dst=dst, sigmaY=sigmaY, borderType=borderType, hint=hint) self.frame_gray = vision.GaussianBlur(self.frame_gray, (5,5), 0, dst=dst, sigmaY=sigmaY, borderType=borderType, hint=hint) def _init_gblur(self): self.gaussian_blur( ksize=self.context.get_or_set("gblur_ksize", (5,5)), sigmaX=self.context.get_or_set("gblur_sigmaX", 0), dst=self.context.get_or_set("gblur_dst", None), sigmaY=self.context.get_or_set("gblur_sigmaY", None), borderType=self.context.get_or_set("gblur_borderType", None), hint=self.context.get_or_set("gblur_hint", None) )