问题描述:第一种算法从相机捕获流视频,有时从中输出一帧。输出之间的时间不同且不可预测。输出应该传递给第二个算法,该算法处理图像并保存结果。而第一个算法保持捕获流视频并在条件允许的情况下输出帧。
如何解决这个问题?
我可以通过CCD_ 1保持第一个算法的运行;暂停";当输出和第二算法开始时。
您可以使用多处理模块,然后使用队列在不同进程之间移动帧。
创建一个队列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)