2009-11-03 6 views
0

Je fais un projet qui reconnaît le visage humain de la caméra. Voici le flux de travail:Conseil en architecture/modèle?

  1. acquérir une trame d'image à partir de la caméra
  2. détecter s'il y a un mouvement dans la trame, si le mouvement détecté dans la trame en cours, mettre le cadre de mouvement en attente de procédé supplémentaire.
  3. recherche fait face dans le cadre de sortie de l'étape 2
  4. s'il y a des visages, sauf le visage

ce que je veux:

  1. le flux de travail peut être facilement étendre, dire que je peut veux ajouter nouvelles étapes vers le flux de travail pour ajouter de nouvelles fonctionnalités.
  2. une étape peut être facilement activé/désactivé sans affecter les étapes suivantes

ce que je peux penser est une architecture de type bus service. par exemple. étape 2. peut publier un message indiquant qu'une trame de mouvement est détectée, l'abonné peut alors poursuivre son processus avec la trame de mouvement capturée.

alors qu'en pensez-vous?

Répondre

2

L'application semble être similaire à un pipeline. Je voudrais aller pour le chain-of-responsibility pattern.

+0

oui. c'est un peu comme un pipeline, mais les étapes peuvent avoir besoin de se connaître. disons, l'étape 3 peut avoir besoin de connaître l'état de l'étape 2, comment puis-je résoudre ce problème? – Benny

+0

Si l'étape 2 ne détecte aucun mouvement dans une trame, l'étape 3 peut ne pas être appelée du tout. L'étape 2 supprime la demande. D'un autre côté, vous pouvez passer un objet d'état le long des images dans le pipeline. – spa

0

J'utiliserais une architecture de plugin et une liste chaînée de rappels pour chaque trame à traiter. De cette façon, en C au moins, ce ne sont que des pointeurs. Vous pouvez créer différentes chaînes-liste chaînée rappel à des fins différentes, par exemple:

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

Ainsi, la chaîne est applique comme callbacks accepter le cadre, ou le résultat d'une étape précédente comme entrée.

J'espère que ma pauvre explication aide.