所以我知道以下链接:Problem accessing camera when using Boost thread on OSX
但我的问题是,当在boost线程中使用openCV时,我无法显示窗口。即:
int main(int argc, char* argv[]) {
CvCapture* cvInputObj = cvCaptureFromCAM((CV_CAP_ANY)); //OSX
assert( cvInputObj != NULL ); //term on fail here
cVision vision(cvInputObj); //Define cVision thread obj
boost::thread cVision_thd(boost::bind(&cVision::Run, &vision));
cVision_thd.join();
std::cout<<"System Going Down..."<<std::endl;
}
在cVision中,我做了一堆openCv调用,例如ex:
cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);
cvShowImage("MONITOR", imCur);
etcetc,其中imCur被提取出来:
imCur = cvQueryFrame(input);
这个确切的代码在Linux中运行良好。我最初尝试使用自定义makefile。那没用。在此之后我尝试了CMAKE。结果仍然相同。并且在linux中仍然可以正常工作。我用自制软件安装了openCV。
答案 0 :(得分:0)
在main
线程中创建窗口,然后将窗口名称作为参数传递给cVision
构造函数。
请记住,窗口是使用:cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);