Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 使用Boost线程显示窗口时出错&;OpenCV OSX_Multithreading_Macos_Boost_Opencv_Homebrew - Fatal编程技术网

Multithreading 使用Boost线程显示窗口时出错&;OpenCV OSX

Multithreading 使用Boost线程显示窗口时出错&;OpenCV OSX,multithreading,macos,boost,opencv,homebrew,Multithreading,Macos,Boost,Opencv,Homebrew,因此,我知道以下链接: 但我的问题是,在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 cVisi

因此,我知道以下链接:

但我的问题是,在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;
}
etcetc,其中imCur提取如下:

        imCur = cvQueryFrame(input);

这段代码在Linux中非常有效。我最初用一个定制的makefile尝试过这个。那是行不通的。在这之后,我试着用CMAKE。还是一样的结果。而且在linux中仍然可以正常工作。我使用自制软件安装了openCV

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


请记住,创建窗口时使用:
cvNamedWindow(“监视器”,CV\u window\u AUTOSIZE)

谢谢,我试过了。我只需要名称的字符串值,对吗?所以基本上我在做一个简单的cvShowImage(“监视器”,imCur)。我看到第一帧或两帧更新,但随后什么都没有。拍摄的第一幅图像似乎是一个更高的分辨率(通过更大的窗口大小可以观察到),然后将其裁剪到640x480。问题是我在CVshowImages之前通过cvSetCaptureProperty设置了图像大小实际上发生了以下情况:Main创建CvCapture对象和窗口,并将其传递给cVision线程。该线程具有以下内容&我看到“Test”被重复打印,但是输入图像不会更新:cvShowImage(“ISIS_MONITOR”,imCur);标准::cout
        imCur = cvQueryFrame(input);