class_docstr: Apply motion blur to the input image using a random-sized kernel.
  
  Args:
      blur_limit (int): maximum kernel size for blurring the input image.
          Should be in range [3, inf). Default: (3, 7).
      allow_shifted (bool): if set to true creates non shifted kernels only,
          otherwise creates randomly shifted kernels. Default: True.
      p (float): probability of applying the transform. Default: 0.5.
  
  Targets:
      image
  
  Image types:
      uint8, float32
class_docstr_tok: ["Apply","motion","blur","to","the","input","image","using","a","random-sized","kernel",".","Args",":","blur_limit","(","int",")",":","maximum","kernel","size","for","blurring","the","input","image",".","Should","be","in","range","[","3",",","inf",")",".","Default",":","(","3",",","7",")",".","allow_shifted","(","bool",")",":","if","set","to","true","creates","non","shifted","kernels","only",",","otherwise","creates","randomly","shifted","kernels",".","Default",":","True",".","p","(","float",")",":","probability","of","applying","the","transform",".","Default",":","0.5",".","Targets",":","image","Image","types",":","uint8",",","float32"]
code: def get_params(self) -> Dict[str, Any]:
      ksize = random.choice(
          list(range(self.blur_limit[0], self.blur_limit[1] + 1, 2))
      )
      if ksize <= 2:
          raise ValueError("ksize must be > 2. Got: {}".format(ksize))
      kernel = np.zeros((ksize, ksize), dtype=np.uint8)
      x1, x2 = random.randint(0, ksize - 1), random.randint(
          0, ksize - 1
      )
      if x1 == x2:
          y1, y2 = random.sample(range(ksize), 2)
      else:
          y1, y2 = random.randint(0, ksize - 1), random.randint(
              0, ksize - 1
          )
  
      def make_odd_val(v1, v2):
          len_v = abs(v1 - v2) + 1
          if len_v % 2 != 1:
              if v2 > v1:
                  v2 -= 1
              else:
                  v1 -= 1
          return v1, v2
  
      if not self.allow_shifted:
          x1, x2 = make_odd_val(x1, x2)
          y1, y2 = make_odd_val(y1, y2)
  
          xc = (x1 + x2) / 2
          yc = (y1 + y2) / 2
  
          center = ksize / 2 - 0.5
          dx = xc - center
          dy = yc - center
          x1, x2 = [int(i - dx) for i in [x1, x2]]
          y1, y2 = [int(i - dy) for i in [y1, y2]]
  
      cv2.line(kernel, (x1, y1), (x2, y2), 1, thickness=1)
  
      # Normalize kernel
      return {"kernel": kernel.astype(np.float32) / np.sum(kernel)}
  
imports: import random
  import warnings
  from typing import Any, Dict, List, Sequence, Tuple
  import cv2
  import numpy
  from albumentations import random_utils
  from albumentations.augmentations import functional
  from albumentations.augmentations.blur import functional
  from albumentations.core.transforms_interface import ImageOnlyTransform, ScaleFloatType, ScaleIntType, to_tuple
label_desc: Use image node_id 4 for calling the MotionBlur obj's underlying member method code with example usage: obj.get_params() and returns: dict, v1,  v2