class_docstr:     This is an auxiliary class that enables Video Streaming using the GPU for caer with minimalistic latency, and at the expense of little to no additional computational requirements.
      
      The basic idea behind it is to tracks and save the salient feature array for the given number of frames and then uses these anchor point to cancel out all perturbations relative to it for the incoming frames in the queue. This class relies heavily on **Threaded Queue mode** for error-free & ultra-fast frame handling.
  
  Args:
      source (int, str): Source path for the video. If ``source=0``, the default camera device is used. For 
          multiple external camera devices, use incremented values. For eg: ``source=1`` represents the second camera device on your system.
      qsize (int): Default queue size for handling the video streams. Default: 128.
class_docstr_tok: ["This","is","an","auxiliary","class","that","enables","Video","Streaming","using","the","GPU","for","caer","with","minimalistic","latency",",","and","at","the","expense","of","little","to","no","additional","computational","requirements",".","The","basic","idea","behind","it","is","to","tracks","and","save","the","salient","feature","array","for","the","given","number","of","frames","and","then","uses","these","anchor","point","to","cancel","out","all","perturbations","relative","to","it","for","the","incoming","frames","in","the","queue",".","This","class","relies","heavily","on","*","*","Threaded","Queue","mode","*","*","for","error-free","&","ultra-fast","frame","handling",".","Args",":","source","(","int",",","str",")",":","Source","path","for","the","video",".","If","``","source=0","``",",","the","default","camera","device","is","used",".","For","multiple","external","camera","devices",",","use","incremented","values",".","For","eg",":","``","source=1","``","represents","the","second","camera","device","on","your","system",".","qsize","(","int",")",":","Default","queue","size","for","handling","the","video","streams",".","Default",":","128","."]
code: def count_frames(self):
      if not self.kill_stream and not self.live_video:
          return self.frames
          # if get_opencv_version() == "2":
          #     return int(self.stream.get(FRAME_COUNT_DEPR))
          # else:
          #     return int(self.stream.get(FRAME_COUNT))
  
      if self.live_video:
          print("[WARNING] Frames cannot be computed on live streams")
          return -1
  
file_path: caer/caer/video/gpufilestream.py
imports: from threading import Thread
  import time
  import math
  from queue import Queue
  import cv2
  from ..annotations import Optional
  from .constants import FRAME_COUNT, FPS
label_desc: Use image node_id 7 for calling the GPUFileStream obj's underlying member method code with example usage: obj.count_frames() and returns: self, unknown