0

こんにちは、opencv 2.4.1 で次の基本的なコマンドを使用して、ウェブカメラを使用してビデオを表示しようとしました:-

int main()

{ cv::Mat san;

  cv::VideoCapture san_cap(0);

  while(1)
  {
    san_cap.read(san);

    cv::imshow("gp",san);

    if(cv::waitKey(0) >=0)

      break;
  }

   return 1;

  }

コンパイル中にエラーは発生しませんが、ソリューションの実行中に出力ビデオが固定フレームにスタックし、コンソールで次のエラーが発生しました:-

VIDIOC_QUERYMENU: 引数が無効です

私のコードを行ごとにデバッグしていると、この特定の行でエラーが発生することがわかりました

if(cv::waitKey(0) >= 0)

この行のエラーは何ですか???

4

1 に答える 1

1

あなたが何をしようとしているのかわかりませんが、cv::waitKey()これに変更すればあなたの例はうまくいくはずだと思います。前述のように、waitKeyは10のようなものに設定する必要があり、videoCaptureが実際に開いているかどうかを常に確認する必要があります。開くことができない場合は、ハードウェア/ドライバー/ OS/OpenCVのインストールに問題があります。

int main() {

    int waitKeyValue = 10;
    cv::Mat san;

    cv::VideoCapture san_cap(0);
    if (san_cap.isOpened()) {
        while (1) {
            san_cap.read(san);
            cv::imshow("gp", san);
            int key = cv::waitKey(waitKeyValue);
            if(key!=-1)cout<<key<<endl;
            if (key == 27 || key == 1048586) {
                if (waitKeyValue == 10)waitKeyValue = 0;
                else waitKeyValue = 10;
            }
        }
    } else cout << "videoCapture not working" << endl;
    return 1;

}
于 2012-07-18T09:39:30.237 に答える