我正在用opencv为无人机做一个视频流项目,我想在2D输入矩阵上应用多个叠加的图像处理。我被建议做所有的操作呼叫非阻塞。
在设计过程中,我想给每个操作一个线程和2个矩阵,最后一个完成的矩阵和当前工作的矩阵。
这样,在当前操作之后的操作可以访问最后完成的矩阵并自己进行处理,即使它是一个较旧的映像,您仍然可以从该操作中获得最新的数据。
这似乎是可行的,但会导致开销,因为当新的数据可用时,操作可能处于操作的中间。
在这个项目中,之前的每一个操作都应该在下一次操作发生之前完成,但是也需要低延迟。
在队列/阻塞操作中这样做有好处吗?
发布于 2019-10-15 12:05:18
线程处理的优点是您可以得到一个处理阶段的流水线。在多核处理器上,这允许您同时运行几个步骤,每个步骤都处理透水步骤的输出。
但是,如果有些步骤比其他步骤花费的时间更长,那么你就无法真正绕过它。速度越快的人就得等到慢一点的时候才能完成。而每一步只能在前一步完成一个图像之后才能开始。
在某些情况下,使用最后一个完整的映像可能会有所帮助,但如果您只是一次又一次地将下一步应用于同一图像,则可能会有所帮助。
https://softwareengineering.stackexchange.com/questions/399713
复制相似问题