我有两个摄像头,这对于同时使用OpenCV
读取帧很重要,我想像Lock
,但我无法弄清楚我可以实现这个的方式。
我需要一些触发器来推送并启用线程来读取帧,然后等待另一个触发器命中,如下所示:
def get_frame(queue, cap):
while running:
if(read_frame):
queue.put(cap.read());
else:
# without this sleep this function just consumes unnecessary CPU time
time.sleep(some_time);
q = Queue.Queue()
# for every camera
for u in xrange(2):
t = threading.Thread(target=get_frame, args = (q, caps[u]))
t.daemon = True
t.start()
上述实施的问题是:
delay
(即它可能是长或短,取决于计算)所以这种方法不起作用,有什么建议吗?
答案 0 :(得分:0)
考虑从VideoCapture获取FPS。另请注意VideoCapture.grab和VideoCapture.retrieve帧之间的区别。这用于相机同步。
首先为两个摄像头调用VideoCapture#grab,然后检索帧。请参阅docs。