class_docstr: Convert the image observation from RGB to gray scale.
  
  Example:
      >>> env = gym.make('CarRacing-v1')
      >>> env.observation_space
      Box(0, 255, (96, 96, 3), uint8)
      >>> env = GrayScaleObservation(gym.make('CarRacing-v1'))
      >>> env.observation_space
      Box(0, 255, (96, 96), uint8)
      >>> env = GrayScaleObservation(gym.make('CarRacing-v1'), keep_dim=True)
      >>> env.observation_space
      Box(0, 255, (96, 96, 1), uint8)
docstr: Convert the image observation from RGB to gray scale.
  
  Args:
      env (Env): The environment to apply the wrapper
      keep_dim (bool): If `True`, a singleton dimension will be added, i.e. observations are of the shape AxBx1.
          Otherwise, they are of shape AxB.
docstr_tok: ["Convert","the","image","observation","from","RGB","to","gray","scale",".","Args",":","env","(","Env",")",":","The","environment","to","apply","the","wrapper","keep_dim","(","bool",")",":","If","`","True","`",",","a","singleton","dimension","will","be","added",",","i.e",".","observations","are","of","the","shape","AxBx1",".","Otherwise",",","they","are","of","shape","AxB","."]
code: def __init__(self, env: gym.Env, keep_dim: bool = False):
      """Convert the image observation from RGB to gray scale.
  
      Args:
          env (Env): The environment to apply the wrapper
          keep_dim (bool): If `True`, a singleton dimension will be added, i.e. observations are of the shape AxBx1.
              Otherwise, they are of shape AxB.
      """
      super().__init__(env)
      self.keep_dim = keep_dim
  
      assert (
          isinstance(self.observation_space, Box)
          and len(self.observation_space.shape) == 3
          and self.observation_space.shape[-1] == 3
      )
  
      obs_shape = self.observation_space.shape[:2]
      if self.keep_dim:
          self.observation_space = Box(
              low=0,
              high=255,
              shape=(obs_shape[0], obs_shape[1], 1),
              dtype=np.uint8,
          )
      else:
          self.observation_space = Box(
              low=0, high=255, shape=obs_shape, dtype=np.uint8
          )
  
imports: import numpy
  import gym
  from gym.spaces import Box
label_desc: Use image node_id 1 to create a new GrayScaleObservation object from inherited base classes: gym with example: obj = GrayScaleObservation(env, keep_dim)