2016-04-25 8 views
4

私はカメラを使ってビデオをキャプチャする非常に簡単なプログラムをテストしようとしていますが、ウィンドウは常に黒のようです。 カメラのLEDが点灯し、プログラムが正常にコンパイルされます。問題の原因を絞り込むためにブラックスクリーンビデオキャプチャopencv

#include "opencv2/highgui/highgui.hpp" 
#include "opencv2/imgproc/imgproc.hpp" 
#include <iostream> 

using namespace cv; 
using namespace std; 

int main() { 
VideoCapture stream1(0); //0 is the id of video device.0 if you have only one camera. 

if (!stream1.isOpened()) { //check if video device has been initialised 
    cout << "cannot open camera"; 
} 

//unconditional loop 
while (true) { 
    Mat cameraFrame; 
    stream1.read(cameraFrame); 
    imshow("cam", cameraFrame); 
    if (waitKey(30) >= 0) 
     break; 
} 
system("pause"); 
return 0; 
} 
+0

if (waitKey(30) >= 0) break; 

を交換するあなたはカメラがOのために働くことを確認しましたアプリケーションですか?私はあなたのコードを実行することができ、それはビデオを適切に表示するので、コードに根本的に間違いはありません。 – Aenimated1

答えて

0

は、ここで先に進むことができます方法は次のとおりです。

  • チェックOpenCVののHighGUIが正しく設定されている場合。

    VideoCapture stream1("video.avi"); 
    stream1.read(cameraFrame); 
    

    perform imshow on cameraFrameを使用して保存したビデオをキャプチャします。それでも黒い画面を取得-if

、あなたが今、あなたのビデオを見ることができれば、それは、OpenCVののHighGUIが正しく設定されていることを意味stream1>>cameraFrame;stream1.read(cameraFrame);を交換し、あなたがしているカメラに問題がある可能性がありを使用して。

  • 多くの場合、プライマリカメラドライバはサードパーティ製のライブラリであるOpenCVにアクセスできません。 VideoCapture stream1(0)VideoCapture stream1(1)に置き換えてください。これで、プライマリカムドライバではなく、お使いのマシンの基本的なカムドライバを指すようになります。

  • 黒い画面が続く場合は、可能であれば、私は、テストのために外部のウェブカメラを使用することをお勧めして、問題はカメラのハードウェア自体

+0

'VideoCapture :: operator >>'関数の実装は、基本的にそれを正確に行います。別の何かが間違っているに違いありません。 – Aenimated1

+0

私は答えを編集してより多くの可能性を含めるようにしました。ありがとうございました。 –

-1

にあるかもしれない、私は同じ問題を抱えていたとことによってそれを解決

if((char)waitKey(10) == 'q') 
    break;