0

所以我知道以下链接:Problem access camera when using Boost thread on OSX

但我的问题是,在 boost 线程中使用 openCV 时,我无法显示窗口。IE:

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 调用,例如 for ex:

            cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);
        cvShowImage("MONITOR", imCur);

etcetc,其中 imCur 被提取出来:

        imCur = cvQueryFrame(input);

这个确切的代码在 Linux 中完美运行。我最初使用自定义 makefile 尝试过这个。那没有用。在此之后,我尝试使用 CMAKE。结果还是一样。并且在linux中仍然可以正常工作。我使用自制软件安装了 openCV。

4

1 回答 1

0

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

请记住,该窗口是通过以下方式创建的:cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);

于 2012-12-01T10:41:49.747 回答