59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
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)
|
|
)
|
|
|