# /// script # requires-python = ">=3.10" # dependencies = ["numpy", "opencv-python"] # /// """ @effect blur @version 1.0.0 @author artdag @description Gaussian blur effect. Softens the image by averaging neighboring pixels. Useful for dreamy effects or reducing detail on quiet parts. @param radius float @range 0 50 @default 5 Blur radius in pixels. Higher = more blur. Must be positive. @example (effect blur :radius 10) @example ;; Blur on quiet, sharp on loud (effect blur :radius (bind energy :range [20 0])) """ import numpy as np import cv2 def process_frame(frame: np.ndarray, params: dict, state: dict) -> tuple: """ Apply Gaussian blur to a video frame. Args: frame: Input frame as numpy array (H, W, 3) RGB uint8 params: Effect parameters - radius: blur radius in pixels (default 5) state: Persistent state dict (unused) Returns: Tuple of (processed_frame, new_state) """ radius = params.get("radius", 5) if radius <= 0: return frame, state # Kernel size must be odd ksize = int(radius) * 2 + 1 result = cv2.GaussianBlur(frame, (ksize, ksize), 0) return result, state