gpt4 book ai didi

c# - TPL 数据流 : Persist previous data

转载 作者:太空狗 更新时间:2023-10-29 23:31:02 24 4
gpt4 key购买 nike

我一直在使用生产者/消费者模式将 TPL 数据流用于图像处理管道。

我正在尝试找出最佳方法,以允许需要前一帧或持久对象的算法。

其中一个过程的示例是背景减法,其中通过将当前帧与动态背景模型进行比较来找到前景蒙版。

如何实现这一点的一个想法是在管道中创建一个循环:

是否有处理此类管道的标准方法?

是否存在与数据排序或异步操作相关的问题?

最佳答案

您不需要通过在管道中使用循环来使事情复杂化,就像在您的图像中一样,您所需要的只是将持久数据保存在一个变量中,该变量在调用处理函数之间持续存在。

如果您使用的是 lambda,则该变量可以是 lambda 之外的局部变量:

IPropagatorBlock<InputImage, OutputImage> CreateProcessingBlock()
{
InputImage previousImage = null;

return new TransformBlock<InputImage, OutputImage>(
inputImage =>
{
var result = Process(inputImage, previousImage);
previousImage = inputImage;
return result;
})
}

如果您在某个对象上使用实例方法,则该变量可以是该对象上的实例字段:

class Processor
{
InputImage previousImage;

public OutputImage Process(InputImage inputImage)
{
var result = Process(inputImage, previousImage);
previousImage = inputImage;
return result;
}
}



new TransformBlock<InputImage, OutputImage>(new Processor().Process)

关于c# - TPL 数据流 : Persist previous data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25259515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com