3

複数の Web カメラを必要とするアプリケーションを開発しています。アプリケーションの各部分で正しい Web カメラが使用されるようにするために、シリアル番号に応じて Web カメラを特定の名前にシンボリック リンクするいくつかの udev ルールを作成しました。

これはうまく機能し、VLC やその他のさまざまなアプリケーションを使用して、その名前でカメラにアクセスできます。

しかし、OpenCV と python を使用して、その名前 (または Linux によって指定されたシンキングされていない名前) でカメラにアクセスしようとすると、カメラからフレームを読み取ることができず、プログラムがハングします。カメラが正常に開きました。おそらくpython/opencv関連のバグであるかどうかをテストするために、C++でサンプルアプリケーションを作成しましたが、C++でも同じことが起こります。

動作しない私の C++ テスト アプリケーションは次のとおりです。

#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main (int argc, const char * argv[])
{
    VideoCapture cap("/dev/my_custom_name");
    if (!cap.isOpened())
        return -1;

    cout << "Opened..." << endl;

    Mat img;
    namedWindow("video capture", CV_WINDOW_AUTOSIZE);
    while (true)
    {
        cout << "Trying..." << endl;
        cap >> img;
        cout << "Got" << endl;
        imshow("video capture", img);
        if (waitKey(10) >= 0)
            break;
    }
    return 0;
}

とメッセージは表示されますがOpened...、メッセージは表示Trying...されませんGot

この問題を解決する方法についてのアイデアはありますか?

(これはすべてLinux上にあります)。

ありがとう

4

1 に答える 1