2009-11-03 59 views
0

我正在做一个从相机识别人脸的项目。 下面是工作流程:模式/架构建议?

  1. 获取图像的照相机从一个帧,
  2. 检测是否存在帧运动如果在当前帧中检测到的运动,把运动帧队列中用于进一步处理。在输出帧
  3. 搜索面临着来自第二步
  4. 如果有面孔,保存面子

我想要什么:

  1. 工作流程可以很容易地扩展,说我可能想添加向工作流添加新功能的新步骤。
  2. 步骤可以很容易地接通/不影响以下步骤

什么我能想到的是一个服务总线状架构关闭。例如, 。第2步。可以发布指示检测到运动帧的消息,订户随后可以利用捕获的运动帧来继续其处理。

那么你怎么看?

回答

2

该应用程序似乎与管道类似。我会去chain-of-responsibility pattern

+0

是的。它有点像管线,但是这些步骤可能需要彼此了解。说,步骤3可能需要知道步骤2的状态,我该如何解决此问题 – Benny 2009-11-03 10:25:20

+0

如果步骤2没有检测到帧中的任何移动,则步骤3可能根本不会被调用。第2步删除请求。另一方面,您可能会沿着流水线沿着帧传递状态对象。 – spa 2009-11-03 12:29:31

0

我会使用插件架构和每个框架的回调链表来处理。

这样,在C至少,他们只是指针。可以创建用于不同目的的不同回调链表链,例如:

Chain 1: sobel()->generic_features()->eigenfaces()->metric_analysis()->save() 

所以链是适用作为回调接受帧或前一步骤作为输入的结果。

希望我可怜的解释有帮助。