5

OpenCVの VideoCapture.open(int) を使用して、 Mac OS X v10.7 (Lion) を実行しているMacBook Proで USB Web カメラからビデオ キャプチャを取得できませんでした。open(0) を使用すると、iSight カメラからのキャプチャが正常に取得されます。しかし、WebCam を見つけようとしてもうまくいきませんでした。

WebCam がインストールされ、Skypeおよびmacamドライバー アプリケーションで適切に動作します。

ここに私が使用しているコードの一部があります:

VideoCapture cap; 
for (int i = 1; i < 1500; i++) {
    if (cap.open(i))
    {
        cout << "Found camera %d\n" << i;
        break;
    }
}
if(!cap.isOpened()) {  // Check if we succeeded
    return -1;
}

0 で初期化iすると、すぐに iSight カメラが検出されます。1 で初期化すると、 = 500 のiときに iSight が再び検出されます。i

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

この行なしでコードを実行してみてください: break;. おそらく複数のカメラが見つかり、そのうちの 1 つが WebCam です。
のパラメーターはcap.openカメラの数だけでなく、使用する API も定義することに 注意してください。

カメラの発送方法:indexカメラ番号です。

  • 0 から 99 までのインデックスを指定すると、最初のインデックスを見つけようとします。
  • 特定のカメラ インデックスにアクセスできる API。
  • API を選択するには、100 の倍数を追加します (cap.cpp からのコメント)

可能性 (highgui_c.h から取得):

CV_CAP_ANY      =0,     // autodetect  
CV_CAP_MIL      =100,   // MIL proprietary drivers  
CV_CAP_VFW      =200,   // platform native  
CV_CAP_V4L      =200,
CV_CAP_V4L2     =200,  
CV_CAP_FIREWARE =300,   // IEEE 1394 drivers  
CV_CAP_FIREWIRE =300,  
CV_CAP_IEEE1394 =300,  
CV_CAP_DC1394   =300,  
CV_CAP_CMU1394  =300,  
CV_CAP_STEREO   =400,   // TYZX proprietary drivers  
CV_CAP_TYZX     =400,  
CV_TYZX_LEFT    =400,  
CV_TYZX_RIGHT   =401,  
CV_TYZX_COLOR   =402,  
CV_TYZX_Z       =403,  
CV_CAP_QT       =500,   // QuickTime  
CV_CAP_UNICAP   =600,   // Unicap drivers  
CV_CAP_DSHOW    =700,   // DirectShow (via videoInput)  
CV_CAP_PVAPI    =800,   // PvAPI, Prosilica GigE SDK  
CV_CAP_OPENNI   =900,   // OpenNI (for Kinect)  
CV_CAP_OPENNI_ASUS =910,   // OpenNI (for Asus Xtion)  
CV_CAP_ANDROID  =1000,  // Android  
CV_CAP_XIAPI    =1100,   // XIMEA Camera API  
CV_CAP_AVFOUNDATION = 1200  // AVFoundation framework for iOS (OS X Lion will have the same API)

おそらくCV_CAP_AVFOUNDATION = 1200あなたが探しているものです - 1200 からループを開始し、削除することを忘れないでくださいbreak;。探しているものが見つかると思います。

于 2013-01-07T00:23:20.093 に答える