我在python中使用了2个线程,并且我有一个大小为1000的全局队列。
用于从相机中抓取帧 - FrameGrabber Thread
在这个帖子中,我使用OpenCV从相机中抓取帧并将其推入全局队列。相机以300 fps的速度工作,这意味着每3.3毫秒的线程捕获帧。
#Global queue
frames = Queue.Queue(1000)
class FrameGrabber(threading.Thread):
def __init__(self, source):
threading.Thread.__init__(self)
self.ID = source
self.cam = cv2.VideoCapture( source )
def run(self):
global frames
ret, frame = self.cam.read()
frames.put(frame)
用于处理抓取的帧 - 处理器线程
在这个帖子中,我从队列中获取帧并进行一些处理,然后继续。一帧的处理接近4毫秒
class Processor(threading.Thread):
def __init__(self, source):
threading.Thread.__init__(self)
def run(self):
global frames
self.current_frame = frames.get()
# Do some Processing
我遇到了这个实现的问题
问题: 什么是最适合此方案的数据结构? 我不想理想地从相机中丢失任何帧。