Files
test/effects/blur.py
gilesb 406cc7c0c7 Initial commit: video effects processing system
Add S-expression based video effects pipeline with modular effect
definitions, constructs, and recipe files.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 12:34:45 +00:00

55 lines
1.2 KiB
Python

# /// 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