docstr: Adds random dot distracts (in various colors and positions) to each frame
  
  @param raw_frame: raw, single RGB/Gray frame
  
  @returns: the augmented frame
code: def apply_augmentation(
      self, raw_frame: np.ndarray, **kwargs
  ) -> np.ndarray:
      """
      Adds random dot distracts (in various colors and positions) to each frame
  
      @param raw_frame: raw, single RGB/Gray frame
  
      @returns: the augmented frame
      """
      assert (raw_frame.ndim == 3) and (
          raw_frame.shape[2] == 3
      ), "VideoDistractorByDots only accepts RGB images"
  
      if self.dot_type == "colored":
          return self.shapes_distractor.apply_augmentation(
              raw_frame, **kwargs
          )
  
      return self.add_blurred_dots(raw_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 3 for calling the VideoDistractorByDots obj's underlying member method code with example usage: obj.apply_augmentation(raw_frame) and returns: self, self