2011-01-20 23 views
2

私は、ビジュアルスタジオ2010でOpenCV 2.2を勝利7 64ビットPCで使用しています。OpenCVでウェブカメラにアクセスできない

"OpenCVの学習"の欄にあるようにOpenCVで写真を表示してAVIファイルを再生することはできますが、ウェブカメラの画像をキャプチャできません。 OpenCVファイルと共に与えられたサンプルでさえ、Webカメラにアクセスできません。

「ビデオソース - >キャプチャソース」と尋ねられ、HPウェブカメラスプリッタとHPウェブカメラの2つのオプションがあります。 HP webcamを選択すると、エラーを表示せずにただちにウィンドウが閉じます。 (私はすべてのエラーメッセージは、それが閉じる前に見えるように速すぎると思う)。 HP Webcamスプリッタを選択すると、Webカメラの画像(ビデオ)が来るはずの新しいウィンドウが均一なグレーで塗りつぶされます。 WebカメラのLEDは点灯していますが、ビデオは見えません。

#include "cv.h" 
#include "highgui.h" 
#include <iostream> 
using namespace cv; 
using namespace std; 

int main(int, char**) 
{ 
    VideoCapture cap("0"); // open the default camera 
    if(!cap.isOpened()) // check if we succeeded 
     { 
    cout << "Error opening camera!"; 
    getchar(); 
    return -1; 
} 

    Mat edges; 
    namedWindow("edges",1); 
    for(;;) 
    { 
     Mat frame; 
     cap >> frame; // get a new frame from camera 
     cvtColor(frame, edges, CV_BGR2GRAY); 
     GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); 
     Canny(edges, edges, 0, 30, 3); 
     imshow("edges", edges); 
     if(waitKey(30) >= 0) break; 
    } 
    // the camera will be deinitialized automatically in VideoCapture destructor 
    return 0; 
} 

そして、私が得たエラーメッセージが表示されました:私のウェブカメラは、(www.testmycam.com)とDirectShowのでhttp://www.codeproject.com/KB/audio-video/WebcamUsingDirectShowNET.aspx

が、私はこれを使って、いくつかのエラーメッセージを取得しようとしなかったフラッシュと正常に動作します

warning: Error opening file (C:\Users\vp\work\ocv\opencv\modules\highgui\src\cap 
_ffmpeg.cpp:454) 
Error opening camera! 

私はこの "cap_ffmpeg.cpp"が何であるかわかりません。これは、 "HP Media Smart"というものに問題があるかどうかわかりません。

ご協力いただきますようお願い申し上げます。

+0

VideoCapture cap( "0")の行にあります。私は "引用符"を追加しました。たぶん問題だ。しかし、なぜデフォルトのサンプルが動作しないのですか?そして、「YouCam Mirage」のプロセスを終了した後、http://www.pacs-portal.co.uk/startup_pages/22000-22999/22266_YCMMirage.exe.htm「HP Webcam」を選択してもサンプルが閉じることはありません。 HP Webcam Spltter」を参照してください。奇妙な。 – Astromaz3

+0

これはあなたのために働くかどうかわかりませんが、user660815の応答はすべての私の問題を解決しました。あなたは彼の答えを正しいものとしてフラグを立てることを検討したいかもしれません。 – Tom

答えて

11

Windows 7 64ビットで同じ問題が発生しました。私は含めるプロパティページのC/C++のパネルに "Preprocesser定義" を変更opencv_highgui再コンパイルする必要がありました:

HAVE_VIDEOINPUT HAVE_DSHOW

希望これは

+2

ああ、私の主人、あなたです、私のヒーローです。)私は数日間googled、opencv 2.1私がほとんど諦めたので、すべてのコードがOpenCv2.1の下で爆発しました(blobslibが奇妙な例外に遭遇し、2.2未満で正常に動作します)。あなたのステップに従って、魅力のように動作します。この問題には多くの人がいますが、気にしなければ、私はあなたのアドバイスを広げ、もしそうなら、このSOの投稿を参照してください。 – Tom

+1

もちろん、喜んで:) – pkmital

2

cap_ffmpeg.cppは、ffmpegを使用してデバイスのキャプチャを実行するソースファイルです。 OpenCVから与えられたデフォルトの例がウェブカメラで動作しない場合、あなたは不運です。サポートされている別のものを購入することをお勧めします。

+0

ラット。少なくとも私は知っている。ありがとう。 – Astromaz3

+0

しかし、openCV2.1サンプルは問題なく動作します... – Astromaz3

+0

もしそうならOpenCV2.1に固執します。それは十分に機能します。 OpenCVにバグを報告したいと思うでしょう。 –

1

ここに私が少し前に書いた記事があります。 videoInputライブラリを使用して、Webカメラからの入力を取得します。それはDirectXを使用しているので、そこのほとんどすべてのウェブカメラで動作します。 Capturing images with DirectX

1

最近、私はOpenCV 2.2とNetBeans 6.9.1をインストールしました。私はカメラのキャプチャに問題がありました。ウィンドウ内の画像は黒ですが、プログラムはエラーなく完全に動作します。この問題を解決するには、管理者ユーザーとしてNetBeansを実行する必要がありました。

私はこれがあなたを助けることを願っています。

1

私はOpenCV 2.2に切り替えただけで、本質的に同じ問題を抱えていますが、Vistaを実行している32ビットのコンパイルです。ウェブカメラが起動しますが、カメラの幅プロパティを設定するエラーメッセージが表示されます。私が特にDirectShowカメラを要求すると、cvCreateCameraCaptureは失敗します。
私が考えているのは、DirectShowカメラを除いて、HighGUIの配布バージョンがビルドされているということです。 OpenCVの好評のWindowsカメラはVideo For Windows、VFWでしたが、Windows Vistaが出て以来、これは廃止されており、あらゆる種類の問題が生じています。なぜ彼らはそれを含めるだけではない、私は知らない。ソースファイルを確認するcap.cpp

次に、自分でHighGUIを再構築し、フラグHAVE_DSHOWが設定されていることを確認します。私は、DirectShowのバージョンが有効になっていることを確認するまで、使用していたOpenCVの最後のバージョンで同じ問題が発生したことを覚えているようです。

1

同じ問題が発生しました。私のVaio Webcam LEDは点灯していますが、画面上に画像はありません。 その後、最初のフレームをJPEGファイルにエクスポートしようとしました。その後、フレームをキャプチャする前に33msの遅延を挿入しようとしましたが、今回は魅力的に機能します。これが助けてくれることを願って。

0

CMAKE GUI、MSVC++ 10Eを、助けVista 32bit、OpenCV2.2

HAVE_VIDEOINPUT/WITH_VIDEOINPUTオプションは動作しません。

/D HAVE_DSHOW /D HAVE_VIDEOINPUT~CMAKE_CXX_FLAGSCMAKE_C_FLAGSを追加すると、マクロの再定義によって警告が表示されます。

0

あなたが作成した後cv::VideoCaptureあなたは(文字列が意味するので、入力がファイルである)整数でないに文字列を与える必要があります。

、デフォルトのカメラを開く

cv::VideoCapture capture(0); 

でストリームをオープンし、それが正常に動作しますし。

関連する問題