複数の 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上にあります)。
ありがとう