OpenCV Многопоточный вызов - PullRequest
       16

OpenCV Многопоточный вызов

0 голосов
/ 25 октября 2009

Я создал программу, которая имеет два потока, а вскоре и три, и пытается получить изображение с веб-камеры из обоих потоков одновременно. Есть ли способ сделать это или есть лучший способ сделать это? (с использованием openCV 1.1)

Ответы [ 2 ]

1 голос
/ 26 октября 2009

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

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

0 голосов
/ 26 октября 2009

Если вы хотите, чтобы оба потока могли работать с изображением, вы должны написать метод, который даст вам текущее изображение. Вы можете получить изображение с камеры при первом вызове метода и блокировать вызовы до тех пор, пока изображение не будет загружено. Затем вы можете возвращать буферизованное изображение, пока не захотите получить следующее изображение. Таким образом, оба потока идут по одному и тому же маршруту, и OpenCV не нужно пытаться открывать соединения с камерой, и если вы блокируете только, когда изображение не загружено, несколько потоков могут получить данные изображения после его сохранения в в то же время.

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