2009-11-03 58 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() 

所以鏈是適用作爲回調接受幀或前一步驟作爲輸入的結果。

希望我可憐的解釋有幫助。