C # потоки, которые синхронизируют две камеры - PullRequest
0 голосов
/ 16 апреля 2011

Мне нужно захватить изображения с двух камер и объединить их вместе.

Поток такой:

  • два потока, по одному для каждой камеры, сэмплируйте кадры камеры.
  • Каждый отправляет кадр третьему потоку, потребителю.
  • Только когда у потребителя есть два кадра, он обрабатывает их, и
  • освобождает потоки захвата, чтобы они моглиполучить следующий кадр.

Может кто-нибудь изложить, что мне нужно сделать?Я использую C # .Net 4.0

Ответы [ 3 ]

1 голос
/ 16 апреля 2011

Вы пытались прочитать эту статью?

http://msdn.microsoft.com/en-us/library/ms228964.aspx

Все о синхронизации потоков с использованием .NET 4. Удивительно просто.

0 голосов
/ 16 апреля 2011

я бы дал каждому объекту захвата 2 объекта AutoResetEvent ... один для сигнализации о завершении захвата (A), а другой - для ожидания разрешения начать следующий захват (B) ...

Рабочая процедура будет выглядеть следующим образом:

захват в локальный буфер
сигнал A
ждать B

потребительский цикл:

подожди и A
скопировать оба буфера
сигнал оба B
процессные копии буферов

0 голосов
/ 16 апреля 2011

Я бы использовал любые статические переменные или базу данных для хранения прогресса выборки отдельных камер. Когда обе камеры отметят свой индивидуальный флаг как завершенный, флаг считывателя будет использовать все кадры, сбросить эти флаги. При сбросе собственного индивидуального флага рабочие потоки запускаются при захвате следующего кадра. Вы также можете использовать паттерны делегатов (подписчик-подписчик) для информирования друг друга через события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...