2012-03-18 12 views
-5

私はビデオを再生したいですopencv library video play

opencvを使ってどのようにすることができますか?

+1

あなたが今までに書いたコードを貼り付けて、修正するのを手伝ってください。 – karlphillip

+0

ところで、OpenCVのネイティブウィンドウに何も表示したくない場合は、 'cvNamedWindow()'、 'cvShowImage()'、 'cvDestroyWindow()'への呼び出しをすべて削除する必要があります。 – karlphillip

答えて

2

our previous conversationのコードを使用して、カメラからフレームを取得してQLabelに表示する方法を示す最小の例をで作成しています。

cvCreateCameraCapture()に渡される値は、システムによって変更される可能性があることに注意してください。私のLinuxで0は魔法の番号です。 WindowsとMacでは私は-1を使用します。単純化の目的のために

、私はちょうどmain()関数の本体を共有しています:

int main(int argc, char** argv) 
{ 
    QApplication app(argc, argv); 

    CvCapture* capture = cvCreateCameraCapture(0); // try -1 or values > 0 if your camera doesn't work 
    if (!capture) 
    { 
     std::cout << "Failed to create capture"; 
     return -1; 
    } 

    IplImage* frame = NULL; 
    QLabel label; 
    while (1) 
    { 
     frame = cvQueryFrame(capture); 
     if(!frame) break; 

     QImage qt_img = IplImage2QImage(frame); 
     label.setPixmap(QPixmap::fromImage(qt_img)); 
     label.show(); 

     // calling cvWaitKey() is essencial to create some delay between grabbing frames 
     cvWaitKey(10); // wait 10ms 
    } 

    return app.exec(); 
} 

EDIT:カメラからビデオファイルやビデオを再生するには

手順は同じです。実際に変更されるのは、cvCreateFileCapture()の場合はcvCreateCameraCapture()です。

cvCreateFileCapture()NULLを返す場合、ビデオファイルを開くことができなかったことを意味します。これは、ビデオを処理するコーデックがない、またはファイルを見つけることができなかったなどの2つの理由で発生します。ファイルをロードするときに

人々の多くは、Windows上でfolowwingミスを犯す:彼らは二重を使用しなければならないとき

capture = cvCreateFileCapture("C:\path\video.avi"); 

彼らは、単一スラッシュを使用します。

capture = cvCreateFileCapture("C:\\path\\video.avi"); 

と何かが失敗することができれば、 は、コールの返品を常に確認する必要があります

capture = cvCreateFileCapture("C:\\path\\video.avi"); 
if (!capture) 
{ 
    // print error message, then exit 
}