使用Boost Thread&显示Windows时出错OpenCV OSX

时间:2012-12-01 05:42:08

标签: multithreading macos boost opencv homebrew

所以我知道以下链接: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。

1 个答案:

答案 0 :(得分:0)

main线程中创建窗口,然后将窗口名称作为参数传递给cVision构造函数。

请记住,窗口是使用:cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);

创建的