所以我知道以下链接:在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调用,例如:
cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);
cvShowImage("MONITOR", imCur);
等等,其中 imCur 被提取出来:
imCur = cvQueryFrame(input);
这个确切的代码在Linux中完美运行。我最初使用自定义生成文件尝试过这个。那行不通。在此之后,我尝试使用CMAKE。结果还是一样。并且在 Linux 中仍然可以正常工作。我用自制软件安装了openCV。
在main
线程中创建窗口,然后将窗口的名称作为参数传递给构造函数cVision
。
请记住,窗口是使用以下内容创建的: cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);