如何防止Python

时间:2018-06-07 19:21:57

标签: python multithreading opencv qthread

我的程序中有多个线程,其中一个是使用OpenCV从2个摄像头读取的。我想保证在从两个摄像头捕获帧时不会中断摄像头线程,以便在基本上同时捕获帧。如何防止线程在读取帧的过程中被中断?

为了更好地解释我的问题,我提供了一些示例代码:

import cv2
import time
cap0 = cv2.VideoCapture(0) #setup first camera
cap1 = cv2.VideoCapture(1) #setup second camera

while True:
  disable_interrupts() #prevent task switching to other threads
  cap0.grab() #capture a frame
  cap1.grab() #capture a frame
  timestamp = time.time() #the approximate time the frames were captured
  enable_interrupts() #allow task switching to continue

  ret, frame0 = cap0.retrieve() #get the previously "grabbed" frame for the first camera
  ret, frame1 = cap1.retrieve() #get the previously "grabbed" frame for the second camera

我以前在没有操作系统的情况下使用微控制器,而且经常使用中断来切换任务。在这种情况下很容易,因为您只需禁用部分/全部中断,执行关键代码,然后重新启用中断。在操作系统世界中是否存在相同的东西?或者OpenCV是否提供了同时捕获多个摄像头的功能?我碰巧使用QThread(PyQt4),QThread也提供这样的东西吗?

0 个答案:

没有答案