Windowsで2つのWebカメラデバイスとして表示されるELP-1MP2CAM001を購入しました。Windwosのデフォルトの「カメラ」アプリとSkypeを開くと、左右のカメラからのフィードを同時に表示できます。したがって、2台のカメラが同じポートに入るUSB帯域幅の問題ではないと思います
私はこれらのフィードの両方を開くためにかなり標準的なコード(以下に表示)を使用していますが、単一のステレオカメラの代わりに2つの標準的なMicrosoft HD3000Webカメラを使用すると正常に機能します。
私はcap2()
引数の中にある範囲の数字を試したので、それが数字の10やそのような奇妙なものに隠れているとは思わない。
私の質問は次のとおりです。
cap(0)
でしょうか?これは私にはありそうもないようです。これに関するどんな助けも素晴らしいでしょう。
コード:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
VideoCapture cap2(1); // open the default camera
cap.set(CV_CAP_PROP_FRAME_WIDTH, 240);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);
cap2.set(CV_CAP_PROP_FRAME_WIDTH, 240);
cap2.set(CV_CAP_PROP_FRAME_HEIGHT, 120);
if (!cap.isOpened()) // check if we succeeded
return -1;
if (!cap2.isOpened()) // check if we succeeded
return -1;
Mat frame;
Mat frame2;
namedWindow("Frame", 1);
namedWindow("Frame2", 1);
for (;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
imshow("Frame", frame);
Mat frame2;
cap2 >> frame2;
imshow("Frame2", frame2);
if (waitKey(30) >= 0) break; // Finish on "esc" key
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
私はこれと同じカメラを持っています、そして私は以前に同じ問題に遭遇しました。次のようにコードの順序を変更してみてください。
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 240);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);
VideoCapture cap2(1);
cap2.set(CV_CAP_PROP_FRAME_WIDTH, 240);
cap2.set(CV_CAP_PROP_FRAME_HEIGHT, 120);
USB帯域幅の問題だと思います。コードでは、最初に2台のカメラをフル解像度で開き、次に2台のカメラの解像度を変更しました。
を呼び出すとVideoCapture cap(0); // open the default camera
、cap
解決策があり1280*720
ます。cap
すでに帯域幅を占有しています。そのため、VideoCapture cap2(1);
カメラをcap2
正常に開くことができません。
それが役に立てば幸い。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加