Как запустить два видеокадра параллельно, используя одну камеру - PullRequest
0 голосов
/ 20 февраля 2019

Я создаю два разных кадра, используя один выход камеры.Мне нужно обрабатывать их отдельно и запускать параллельно.

Import cv2
Import numpy as no

cap=videocapture(0)

def frame_1():
        ret,frame=cap.read()
        cv2.imshow("frame1",frame)
        print("a")

def frame_2():
        ret,frame=cap.read()
        cv2.imshow("frame2",frame)
        print("b")
        print("c")

while True:
         frame_1()
         frame_2()
         If cv2.waitkey(1)&00ff=ord("z"):
                  break
 cap.release()
 cv2.destroyallwindows()

Мне нужно, чтобы эти два кадра работали параллельно.Когда я запускаю код, появляются два фрейма, но один фрейм останавливается, а другой запускается.И я также могу найти разницу, используя опцию печати.Сначала он печатает a, затем печатает b и c, вот так.Как я могу заставить эти кадры работать параллельно?

1 Ответ

0 голосов
/ 21 февраля 2019

Ниже приведен пример кода с использованием потоков:

import cv2
import threading

def frame(win, chars):
    while not flag.is_set() and cap.isOpened():
        rv, frame = cap.read()
        if rv:
            cv2.imshow(win, frame)
            for c in chars: print(c)
        if cv2.waitKey(1) & 0xff == 27: break
    flag.set() # terminate other threads as well

cap = cv2.VideoCapture(0)
flag = threading.Event()

t1 = threading.Thread(target=frame, args=('win1','a'))
t1.start()
t2 = threading.Thread(target=frame, args=('win2',('b','c')))
t2.start()

t1.join()
t2.join()

cap.release()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...