web-dev-qa-db-ja.com

libv4l2:ストリームをオンにする際のエラー:無効な引数VIDIOC_STREAMON:無効な引数

Ubuntu 14.04でopencv 3.0.0とC++を使用してカメラで作業しています。

カメラを使用してプログラムを実行し、停止するとき Ctrl + C、私はそれをもう一度実行することはできませんし、それは私に次を与えます:

libv4l2: error turning on stream: Invalid argument
VIDIOC_STREAMON: Invalid argument
Cannot read a frame from video stream

lsusbを試しましたが、カメラ(外部ではなくラップトップに組み込まれています)が認識されません。また、cheezeを使用すると、カメラを開こうとしたときにエラーが発生したことがわかります。

唯一の解決策は、ラップトップを再起動することです。

どんな提案も大歓迎です:)ありがとう

3
The Beast

これは、カメラがプログラムによってリリースされていない場合に発生します-たとえば、 Ctrl + C。カスタム方法を使用して、カメラの読み取りループを終了できます。たとえば、 Esc

while (1) { // camera loop
    cap.read(frame);
    ...
    (frame processing)
    ...
    if (waitKey(20) == 27) { // wait for 'Esc' key press for 20ms
        break; //  if 'Esc' key is pressed, break loop
    }
}

または、より良い、あなたはキャッチすることができます Ctrl + C (SIGINTシグナル):

bool stop = false;

void sigIntHandler(int signal) {
    stop = true;
}


std::signal(SIGINT, sigIntHandler);

while (!stop) { // camera loop
    cap.read(frame);
    ...
    (frame processing)
    ...
}

参照: C++リファレンスでの信号処理

3
Honza

プラットフォームについては言及しませんが、Raspberry Piでは、v4l2ドライバーを使用してビデオキャプチャを実行するときに、GPUメモリが128 MB以上に設定されていない場合にこのエラーが発生する可能性があります。 Sudo raspi-configを実行し、メニューを使用して128に調整します。

0
bleater

ここでの問題はカーネルにあります

Sudo apt-get install linux-generic-lts-utopic

これは私のためのトリックを行いました

0
Nipuna C