如何使用单个摄像头并行运行两个视频帧

问题描述 投票:-1回答:1

我正在使用单个凸轮输出创建两个不同的帧。我需要单独处理它们并并行运行它们。

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()

我需要这两个帧并行工作。当我运行代码时,会出现两个帧,但是一个帧在运行另一个帧时会冻结。我也可以使用print选项找到差异。首先它打印a,然后打印b和c,就像那样。如何使这些框架并行工作?

python opencv parallel-processing
1个回答
0
投票

以下是使用线程的示例代码:

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()
© www.soinside.com 2019 - 2024. All rights reserved.