code: def adjust_contrast_torchvision(img, factor):
      if factor == 1:
          return img
  
      if is_grayscale_image(img):
          mean = img.mean()
      else:
          mean = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY).mean()
  
      if factor == 0:
          if img.dtype != np.float32:
              mean = int(mean + 0.5)
          return np.full_like(img, mean, dtype=img.dtype)
  
      if img.dtype == np.uint8:
          return _adjust_contrast_torchvision_uint8(img, factor, mean)
  
      return clip(
          img.astype(np.float32) * factor + mean * (1 - factor),
          img.dtype,
          MAX_VALUES_BY_DTYPE[img.dtype],
      )
  
imports: from __future__ import division
  from typing import Optional, Sequence, Union
  from warnings import warn
  import cv2
  import numpy
  import skimage
  from albumentations import random_utils
  from albumentations.augmentations.utils import MAX_VALUES_BY_DTYPE, _maybe_process_in_chunks, clip, clipped, ensure_contiguous, is_grayscale_image, is_rgb_image, non_rgb_warning, preserve_channel_dim, preserve_shape
label_desc: Use image node_id 52 for calling a global function with example usage: adjust_contrast_torchvision(img, factor) and returns: clip, img, np, _adjust_contrast_torchvision_uint8