Я создал программу, которая имеет два потока, которые скоро будут три, которые пытаются получить изображение из веб-камеры из обоих потоков одновременно. Есть ли способ сделать это или есть лучший способ сделать это? (с использованием openCV 1.1)OpenCV Многопоточный вызов
ответ
Если вы хотите, чтобы оба потока могли работать с изображением, вы должны написать метод, который дает вам текущее изображение. Вы можете получить изображение с кулачка при первом вызове метода и блокировать вызовы до загрузки изображения. Затем вы можете вернуть буферизованное изображение, пока не захотите получить следующее изображение. Таким образом, оба потока направляют один и тот же маршрут на кулак, и OpenCV не должен пытаться открывать соединения с камерой, и если вы блокируете только пока изображение не загружено, несколько потоков могут получить данные изображения после того, как они были сохранены на в то же время.
Могу ли я предложить только один из ваших потоков (позвольте назвать его основным) поговорить с камерой, получить изображение и установить его все. Как только он будет установлен и помещен в место в памяти, вы можете уведомить второй поток, где находится это место (использовать это мьютекс), и оба потока могут отключиться и выполнить их обработку. Как только обе потоки будут выполнены с этим изображением (здесь также используется мьютекс), вы можете первичным потоком получить другое изображение и начать процесс.
Если ваша камера производит много изображений, и вы хотите начать работать над ними до того, как оба потока закончатся, вы можете перейти к трем потокам ... один для получения изображения, а два других просто чтобы сделать два типа обработки. Это будет намного сложнее, потому что вам нужно будет иметь несколько буферов. Вероятно, вам также понадобятся несколько мьютексов и, возможно, пара очередей, но все это можно сделать :-)
- 1. многопоточный Qt + OpenCV
- 2. Многопоточный обратный вызов
- 3. Вызов Gstreamer внутри openCV
- 4. Вызов opencv через Emgucv
- 5. Многопоточный PHP и многопоточный Python
- 6. Вызов методов OpenCV из vuforia
- 7. Java - многопоточный прирост
- 8. Многопоточный python
- 9. Многопоточный QuickSort
- 10. C++ многопоточный
- 11. Многопоточный отладчик
- 12. Многопоточный Z3?
- 13. Многопоточный JDBC
- 14. многопоточный вектор
- 15. многопоточный предел?
- 16. Многопоточный дизайн
- 17. Многопоточный Haskell
- 18. многопоточный сервер
- 19. Многопоточный метод
- 20. Многопоточный BIOS
- 21. Многопоточный выпуск
- 22. многопоточный QSqlQuery
- 23. многопоточный поиск простых чисел
- 24. Java черновики AI (многопоточный)
- 25. C# Многопоточный дизайн домена
- 26. многопоточный шаблон перезапуска функции/решение
- 27. OpenGL многопоточный трассировка графика сцены
- 28. Вызов функции Python с Opencv в Django
- 29. Вызов C++ InRange в OpenCV 2,3
- 30. Вызов OpenCV CvSVMParams в Objective-C
Хм, вам действительно нужно подробно остановиться на вашем вопросе. Почему вы пытаетесь получить одно и то же изображение в двух потоках одновременно? Существует ли конкретная проблема с кодом, который вы сейчас используете? – DeusAduro