2011-04-15 4 views
0

J'ai besoin de capturer des images de deux caméras et de les combiner ensemble.Filets C# synchronisant deux caméras

Le flux est comme suit:

  • deux fils, un pour chaque caméra, un échantillon des trames de la caméra.
  • Chacun envoie la trame à un troisième thread, le consommateur.
  • Seulement lorsque le consommateur a deux cadres, il les traite, et
  • libère les threads de capture afin qu'ils puissent obtenir la trame suivante.

Quelqu'un peut-il décrire ce que je dois faire? J'utilise C# .Net 4.0

+1

Avez-vous besoin en fait deux fils pour chaque caméra? Ne pourriez-vous pas prendre les photos de façon synchrone avec votre client? –

+0

@sachar: Il n'est pas nécessaire de signer des messages sur SO. C'est fait automatiquement. Il n'y a pas non plus besoin de balises HTML dans le message. Il y a un moteur de démarquage qui traite le texte. S'il vous plaît voir la FAQ pour plus d'informations. –

+0

J'ai essayé de manière synchrone, c'est trop lent. –

Répondre

0

J'utiliserais des variables statiques ou une base de données pour stocker la progression de l'activité d'échantillonnage de chaque caméra. Lorsque les deux caméras marquent leur drapeau individuel comme étant terminé, l'indicateur de lecture consommera toutes les images, et les réinitialisera. Uplon réinitialisation de son propre indicateur individuel, les threads de travail commencent à capturer la trame suivante. Vous pouvez également utiliser des modèles de délégué (prescriber-abonné) pour s'informer mutuellement à travers les événements.

0

je donnerais chaque capture de travail 2 objets AutoResetEvent ... un à signaler lors de la capture se fait (A), et l'autre à attendre l'autorisation de commencer la prochaine capture (B) ...

routine de travail serait la boucle suivante:

capture de signal de mémoire tampon locale
A
attente B

boucle de consommateur:

attendre pour A
copie les deux tampons
signaux deux B
copys de processus de tampons

Questions connexes