class_docstr: VideoGear API provides a special internal wrapper around VidGear's exclusive Video Stabilizer class.
  VideoGear also acts as a Common Video-Capture API that provides internal access for both CamGear and PiGear APIs and their parameters with an exclusive enablePiCamera boolean flag.
  
  VideoGear is ideal when you need to switch to different video sources without changing your code much. Also, it enables easy stabilization for various video-streams (real-time or not)
  with minimum effort and writing way fewer lines of code.
docstr: Extracts frames synchronously from selected API's monitored deque, while maintaining a fixed-length frame
  buffer in the memory, and blocks the thread if the deque is full.
  
  **Returns:** A n-dimensional numpy array.
docstr_tok: ["Extracts","frames","synchronously","from","selected","API","'s","monitored","deque",",","while","maintaining","a","fixed-length","frame","buffer","in","the","memory",",","and","blocks","the","thread","if","the","deque","is","full",".","*","*","Returns",":","*","*","A","n-dimensional","numpy","array","."]
code: def read(self):
      """
      Extracts frames synchronously from selected API's monitored deque, while maintaining a fixed-length frame
      buffer in the memory, and blocks the thread if the deque is full.
  
      **Returns:** A n-dimensional numpy array.
      """
      while self.__stablization_mode:
          frame = self.stream.read()
          if frame is None:
              break
          frame_stab = self.__stabilizer_obj.stabilize(frame)
          if not (frame_stab is None):
              return frame_stab
      return self.stream.read()
  
file_path: vidgear/vidgear/gears/videogear.py
imports: import logging
  from .helper import logger_handler, logcurr_vidgear_ver
  from .camgear import CamGear
label_desc: Use image node_id 3 for calling the VideoGear obj's underlying member method code with example usage: obj.read() and returns: self, frame_stab