code: def drawGaussian(img, pt, sigma, sig=1):
      tmpSize = 3 * sigma
      # Check that any part of the gaussian is in-bounds
      ul = [int(pt[0] - tmpSize), int(pt[1] - tmpSize)]
      br = [int(pt[0] + tmpSize + 1), int(pt[1] + tmpSize + 1)]
  
      if (
          ul[0] >= img.shape[1]
          or ul[1] >= img.shape[0]
          or br[0] < 0
          or br[1] < 0
      ):
          # If not, just return the image as is
          return img
  
      # Generate gaussian
      size = 2 * tmpSize + 1
      x = np.arange(0, size, 1, np.float32)
      y = x[:, np.newaxis]
      x0 = y0 = size // 2
      sigma = size / 4.0
      # The gaussian is not normalized, we want the center value to equal 1
      g = np.exp(-((x - x0) ** 2 + (y - y0) ** 2) / (2 * (sigma**2)))
  
      if sig < 0:
          g *= opt.spRate
      # Usable gaussian range
      g_x = max(0, -ul[0]), min(br[0], img.shape[1]) - ul[0]
      g_y = max(0, -ul[1]), min(br[1], img.shape[0]) - ul[1]
      # Image range
      img_x = max(0, ul[0]), min(br[0], img.shape[1])
      img_y = max(0, ul[1]), min(br[1], img.shape[0])
  
      img[img_y[0] : img_y[1], img_x[0] : img_x[1]] = g[
          g_y[0] : g_y[1], g_x[0] : g_x[1]
      ]
      return img
  
imports: from __future__ import absolute_import
  from __future__ import division
  import math
  import random
  import numpy
  import mxnet
  from mxnet import nd, image
  from mxnet.gluon.data.vision import transforms
  from ...utils.filesystem import try_import_cv2
label_desc: Use image node_id 23 for calling a global function with example usage: drawGaussian(img, pt, sigma, sig) and returns: img, img