code: def add_blurred_dots(self, raw_frame: np.ndarray) -> np.ndarray:
      height, width = raw_frame.shape[:2]
      distract_frame = raw_frame.copy()
  
      for i in range(self.num_dots):
          fraction_x, fraction_y = self.get_origins(i)
          x = int(fraction_x * width)
          y = int(fraction_y * height)
  
          # I think that sometimes the random positioning of the dot goes
          # past the frame resulting in an error, but I can't repro this, so
          # try/catching for now
          try:
              dot_bbox = distract_frame[y : y + 10, x : x + 10]
              dot_bbox = cv2.GaussianBlur(
                  dot_bbox, (111, 111), cv2.BORDER_DEFAULT
              )
              distract_frame[y : y + 10, x : x + 10] = dot_bbox
          except Exception as e:
              logger.warning(
                  f"Exception while adding Gaussian dot distractor: {e}"
              )
  
      return distract_frame
  
file_path: AugLy/augly/video/augmenters/cv2/dots.py
imports: import logging
  import cv2
  import numpy
  from augly.video.augmenters.cv2.base_augmenter import BaseCV2Augmenter
  from augly.video.augmenters.cv2.shapes import VideoDistractorByShapes
label_desc: Use image node_id 2 for calling the VideoDistractorByDots obj's underlying member method code with example usage: obj.add_blurred_dots(raw_frame) and returns: distract_frame