class_docstr: CamGear supports a diverse range of video streams which can handle/control video stream almost any IP/USB Cameras, multimedia video file format (upto 4k tested),
  any network stream URL such as http(s), rtp, rtsp, rtmp, mms, etc. It also supports Gstreamer's RAW pipelines.
  
  CamGear API provides a flexible, high-level multi-threaded wrapper around OpenCV's VideoCapture API with direct access to almost all of its available parameters.
  It relies on Threaded Queue mode for threaded, error-free and synchronized frame handling.
  
  CamGear internally implements `yt_dlp` backend class for seamlessly pipelining live video-frames and metadata from various streaming services like YouTube, Dailymotion,
  Twitch, and [many more ➶](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md#supported-sites)
docstr: Extracts frames synchronously from monitored queue, while maintaining a fixed-length frame buffer in the memory,
  and blocks the thread if the queue is full.
  
  **Returns:** A n-dimensional numpy array.
code: def read(self):
      """
      Extracts frames synchronously from monitored queue, while maintaining a fixed-length frame buffer in the memory,
      and blocks the thread if the queue is full.
  
      **Returns:** A n-dimensional numpy array.
      """
      while (
          self.__threaded_queue_mode and not self.__terminate.is_set()
      ):
          return self.__queue.get(timeout=self.__thread_timeout)
      # return current frame
      # only after stream is read
      return (
          self.frame
          if not self.__terminate.is_set()  # check if already terminated
          and self.__stream_read.wait(
              timeout=self.__thread_timeout
          )  # wait for it
          else None
      )
  
file_path: vidgear/vidgear/gears/camgear.py
imports: import cv2
  import time
  import queue
  import logging
  from threading import Thread, Event
  from .helper import capPropId, logger_handler, check_CV_version, get_supported_resolution, check_gstreamer_support, import_dependency_safe, logcurr_vidgear_ver
label_desc: Use image node_id 4 for calling the CamGear obj's underlying member method code with example usage: obj.read() and returns: unknown, self