Blur Objects

Blurs any detected objects in the video

Overview

Blurs any detected objects in the video

Inputs & Outputs

  • Inputs : 1, Media Format : Raw Video
  • Outputs : 1, Media Format: Raw Video
  • Output Metadata : None

Properties

PropertyDescriptionTypeDefaultRequired
object_labelsComma separated list of detected object labels to blur (see Model Labels for a list of labels detected by that model). Specified as object_label or object_label.class_label. Ex. : face : Blurs all face objects, face.mask : Blurs all objects of type face which also have a class of mask.model-labelnullYes
modeMode of operation. Options: include - Include matches that match the specified object types, exclude - Exclude objects that don't match the specified.enum"include"Yes
blur_typeMethod of blurring. Options: simple, gaussian, opaque, pixel.enum"pixel"Yes
intensityIntensity of blur. Slider with min value of 0 and max value of 10.slider7Yes

Metadata

Access metadata using the Function Node or using the API, from the snapshot or clip saved downstream of this node.

Metadata PropertyDescription
NoneNone

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