如果从第一个算法返回,则运行第二个算法,而第一个算法一直运行 Python

问题描述

问题描述:第一种算法从相机捕获流视频,有时从中输出一帧。输出间的时间不同且不可预测。输出应传递给第二个算法,处理图像并保存结果。而第一个算法继续捕获流视频并在条件下输出帧。

如何解决这个问题?

我可以通过 while (cap.isOpened()): 保持第一个算法运行,但是当输出和第二个算法开始时它会“暂停”。

解决方法

您可以使用多处理模块,然后使用队列在不同进程之间移动帧。

创建一个队列 q。 使用输入参数 q 创建进程 p。 在主进程中读取帧并附加到 q。 在 p 中,不断检查 q,只要不是空的,就可以从中读取并运行您的算法。 类似于下面的代码,但根据您的用例进行编辑。

from multiprocessing import Process,Queue

def do_your_thing(myQ):
  while True:
    data = myQ.get()
    if data is not None:
      # your algorithm runs here

q = Queue()
p = Process(target=do_your_thing,args=(q,))
p.start()
# your stream reading code 
while True:
  frame = camera.read()
  q.put(frame)