0

だから私は次のリンクを認識しています: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でも問題なく動作します。homebrew を使用して openCV をインストールしました。

4

1 に答える 1

0

mainスレッドでウィンドウを作成し、ウィンドウの名前をパラメーターとしてcVisionコンストラクターに渡します。

ウィンドウは次のように作成されることに注意してください。cvNamedWindow("MONITOR", CV_WINDOW_AUTOSIZE);

于 2012-12-01T10:41:49.747 に答える