В моей программе несколько потоков, и одна из них читает с двух камер с помощью OpenCV.Я хочу гарантировать, что поток камеры не прерывается во время захвата кадров с двух камер, так что кадры захватываются в одно и то же время.Как я могу предотвратить прерывание потока во время чтения фреймов?
Чтобы лучше объяснить мой вопрос, я привел пример кода:
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 предлагает что-то подобное?