Blur and Redact
Blurs and redacts any detected objects or regions in the video
Overview
Blurs and redacts any detected objects or regions in the video
Inputs & Outputs
- Inputs : 1, Media Format : Raw Video
- Outputs : 1, Media Format: Raw Video
- Output Metadata : None
Properties
Property | Description | Type | Default | Required |
---|---|---|---|---|
enabled | Enable or disable the node | bool | true | Yes |
roi_labels | Labels for regions of interest | hidden | null | Yes |
rois | Regions of interest to blur and redact. Conditional on roi_labels. | polygon | null | Yes |
object_labels | Process detected objects with specified types depending on the mode. Use the object_label.class_label format to blur objects that also have a specific class. Ex. car ,person ,face.mask | model-label | null | Yes |
mode | Include or exclude objects that match the specified types. Options: include - Include objects that match the specified object types, exclude - Exclude objects that don't match the specified object types | enum | "include" | Yes |
blur_type | Blur method to use. Options: simple, gaussian, opaque, pixel | enum | "pixel" | Yes |
intensity | Blur intensity. Min: 0, Max: 10 | slider | 7 | Yes |
Metadata
None
Customize
In order to customize this node for your use case, use the code below inside a Function Node.
from lumeopipeline import VideoFrame
import cv2
def process_frame(frame: VideoFrame, object_labels = None, **kwargs) -> bool:
width = frame.video_info().width
height = frame.video_info().height
with frame.data() as mat:
meta = frame.meta()
if meta is not None:
objects = meta.get_field("objects")
if objects is not None:
object_label_list = object_labels.lower().replace(" ","").split(",") if object_labels is not None else []
for object in objects:
if object['label'] in object_label_list or len(object_label_list) == 0:
object_rect = object['rect']
object_rect = {key: int(value) for key, value in object_rect.items()}
y = object_rect['top']
yEnd = object_rect['top'] + object_rect['height']
x = object_rect['left']
xEnd = object_rect['left'] + object_rect['width']
mat[y:yEnd,x:xEnd] = cv2.blur(mat[y:yEnd,x:xEnd], (23,23) )
return True
Updated 7 days ago