1

openCVでウェブカメラストリームを読み取って、コンピュータービデオを実行しようとしています。内部ウェブカメラと外部 USB ウェブカメラの両方を試してみましたが、どちらもカモラマ、ストリーマーなどのプログラムでうまく機能しています。

私のコードの一部:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include "pic_manipulation.hpp"
#include "colorDetector.h"
#include <time.h>
using namespace std;


int main ( int argc, char **argv ){
    string file="../test.avi";
    cv::VideoCapture capture(0);//les video
    if(!capture.isOpened()){
        cout <<"could not read file"<<endl;
        return -1;
    }   
    double rate=capture.get(CV_CAP_PROP_FPS);
    bool stop(false);
    cv::Mat frame;
    cv::namedWindow("Extract frame");
    int delay=1000/rate;
    while(!stop){
        if(!capture.read(frame))break;
        cv::imshow("Extract frame", frame);
        sleep(delay/1000);
        if(cv::waitKey(delay)>=0){
            cout<<"stop"<<endl;
            stop=true;
            capture.release();
        }
        cout<< "one loop finished"<<endl;
    }
    return 0;
}    

プログラムをコンパイルして実行すると、エラーや警告が表示されず、if(!capture.isOpened()) で返されます (または、isOpened をスキップすると、次の if(...) で返されます)。動画ファイルは問題なく読めます。私のopencvのインストールのバグなのか、それとも問題の原因となっているのはLinux Webcam設定なのか、誰でも知っていますか? Linux mint を使用しており、cmake/g++ でプロジェクトをビルドしています

4

2 に答える 2

0

この優れたガイドに従ってopenCVをインストールすることで、問題を解決しました。UbuntuにOpenCV2.4.2をインストールして構成するための包括的なガイド

上記のガイドで指定されているように、64ビットプラットフォームでffmpeg、v4lをビルドするための正しい構成を設定しなかったと思われます。とにかく、それはついに機能します!

于 2012-10-09T06:13:57.477 に答える
0

コードをもう一度見てください。

cv::VideoCapture capture(0);      // open the default camera
if(!capture.isOpened())           // check if it succeeded
{
  //...
}  

isOpened()インデックスに失敗したという事実は0、デフォルトのカメラを開くことができなかったことを示しています。1コンピューターに他のカメラが接続されているので、、、、...2を渡すこともできます。3

ドキュメントを確認し、これらの各メソッドが何をして何を返すかを理解することは常に良いことです。

サポートされているウェブカメラのリストは次のとおりです。一部のカメラは OpenCV でサポートされていない可能性があります。これで、デフォルトのカメラが機能しない理由が説明できます。

于 2012-10-02T14:38:51.867 に答える