Я пытаюсь использовать OpenCV, чтобы открыть камеру.Это прекрасно работает, когда я открываю камеру в главном потоке, но когда я пытаюсь открыть камеру в потоке Boost, это не удается.Я не смог Google, почему это происходит.Я предполагаю, что это как-то связано с разрешениями потока Boost.
Следующее работает нормально:
#include <cv.h>
#include <boost/thread.hpp>
#include <highgui.h>
using namespace cv;
void openCamera() {
Ptr< VideoCapture > capPtr(new VideoCapture(0)); // open the default camera
}
int main() {
openCamera();
}
И моя камера кратковременно включается, после чего я получаю сообщение «Очистка камеры»как и следовало ожидать.
Но когда я пытаюсь сделать то же самое через поток Boost, он не открывает камеру:
#include <cv.h>
#include <boost/thread.hpp>
#include <highgui.h>
#include <iostream>
using namespace cv;
void openCamera() {
std::cout << "confirming that openCamera() was called" << std::endl;
Ptr< VideoCapture > capPtr(new VideoCapture(0)); // open the default camera
}
int main() {
boost::thread trackerThread( boost::bind(openCamera) );
}
Это выводит «подтверждение того, что openCamera () была вызвана», но камера никогда не включается и отсутствует сообщение «Очистить камеру».
Можно ли как-нибудь это исправить?
Спасибо!