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

PropertyDescriptionTypeDefaultRequired
enabledEnable or disable the nodebooltrueYes
roi_labelsLabels for regions of interesthiddennullYes
roisRegions of interest to blur and redact. Conditional on roi_labels.polygonnullYes
object_labelsProcess 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.maskmodel-labelnullYes
modeInclude 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 typesenum"include"Yes
blur_typeBlur method to use. Options: simple, gaussian, opaque, pixelenum"pixel"Yes
intensityBlur intensity. Min: 0, Max: 10slider7Yes

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