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



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

最新更新