Я пытаюсь использовать OpenCV, чтобы открыть камеру. Это отлично работает, когда я открываю камеру в основном потоке, но когда я пытаюсь открыть камеру в потоке Boost, происходит сбой. Я не смог погуглить, почему это происходит. Я предполагаю, что это как-то связано с разрешениями потока 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()», но камера никогда не включается, и нет сообщения «Очистка камеры».
Есть ли способ исправить это?
Спасибо!
NSRunLoop
; не знаю, как добраться до одного из новой темы. - person James   schedule 08.03.2011