Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果从第一个算法返回,则运行第二个算法,而第一个算法始终保持运行。python_Python_Opencv_Image Processing_Computer Vision_Video Processing - Fatal编程技术网

如果从第一个算法返回,则运行第二个算法,而第一个算法始终保持运行。python

如果从第一个算法返回,则运行第二个算法,而第一个算法始终保持运行。python,python,opencv,image-processing,computer-vision,video-processing,Python,Opencv,Image Processing,Computer Vision,Video Processing,问题描述:第一种算法从摄像机捕获流视频,有时从中输出一帧。输出之间的时间不同且不可预测。输出应传递给第二个算法,该算法处理图像并保存结果。而第一种算法在条件允许的情况下继续捕获流视频并输出帧 如何解决这个问题 我可以在cap.isOpened时保持第一个算法运行:但当输出和第二个算法启动时,它将暂停。您可以使用多处理模块,然后使用队列在不同进程之间移动帧 创建一个队列q。 用输入参数q创建一个进程p。 在主进程中读取帧并附加到q。 在p中,经常检查q,只要q不是空的,就从中读取并运行您的算法。

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

如何解决这个问题


我可以在cap.isOpened时保持第一个算法运行:但当输出和第二个算法启动时,它将暂停。

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

创建一个队列q。 用输入参数q创建一个进程p。 在主进程中读取帧并附加到q。 在p中,经常检查q,只要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)

首先读这篇文章——我不确定我是否完全理解了这个问题,但我认为这可能是背对背的。我认为你正在读取相机的每一帧,并将每一帧放入队列,这是一个相当大的开销。我认为最好是读取和处理每个帧,只将满足某些条件的帧放在队列中。我可能错了。我只是告诉他如何在两个进程之间共享帧。这段代码是不可运行的,它只是一个sudo代码的例子。非常感谢asafary,即使它只是一个sudo代码,我已经掌握了这个想法,知道现在要做什么了!马克·塞切尔,我说对了