だから私は次のリンクを認識しています: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 をインストールしました。