oki*_*ory 4 c++ opencv boost-thread osx-snow-leopard
我正在尝试使用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();
}
Run Code Online (Sandbox Code Playgroud)
然后我的相机短暂打开,之后我收到消息"清理相机",正如人们所期望的那样.
但是当我通过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) );
}
Run Code Online (Sandbox Code Playgroud)
这打印"确认openCamera()被调用",但相机从未打开,并且没有"清理相机"消息.
有什么办法可以解决吗?
谢谢!
我不使用boost很多,但是你不需要做一些事情来保持main()在你的线程工作时退出吗?也许......
int main() {
boost::thread trackerThread( boost::bind(openCamera) );
trackerThread.join();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
797 次 |
| 最近记录: |