обработка кадров веб-камеры на разных потоках - PullRequest
0 голосов
/ 04 января 2012

У меня есть приложение, которое выполняет некоторую обработку изображения для каждого нового кадра, недавно я купил новую веб-камеру, которая имеет действительно хорошее разрешение 1280x960 по сравнению со своей старой камерой (360x240), мое приложение выполняет некоторую обработку изображения для каждого нового кадра с веб-камеры, но с таким высоким разрешением обработка просто идет медленно, и мое приложение зависает. Я думал, что мог бы начать, скажем, 10 потоков при запуске приложения и обрезать каждый кадр до 10 равных частей из основного потока и передать его рабочим потокам, чтобы каждый рабочий поток имел дело только с небольшой частью кадра.

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

Раньше я работал с Threading и Thread pool, но я не совсем уверен, как сохранить поток живым и передавать объекты из основного потока во время его работы, поэтому любой фрагмент кода будет полезным, или, возможно, есть лучший подход к эта проблема?

Спасибо

1 Ответ

3 голосов
/ 04 января 2012

Это классический случай для "производителя-потребителя" ... ваша веб-камера является "производителем", а потоки - "потребителями" ...

В .NET (4) есть действительно хорошая реализация, называемая BlockingCollection, чтобы легко ее построить - см. http://msdn.microsoft.com/en-us/library/dd997371.aspx и http://msdn.microsoft.com/en-us/library/dd267312.aspx

...