微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如果从第一个算法返回,则运行第二个算法,而第一个算法一直运行 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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。