0

ubuntu で opencv c++ を使用して avi ファイルで再生しようとしていますが、出力が得られません。私が使用しているコードは、aviビデオを再生するために使用されるオンラインで見つけた標準コードですが、出力が表示されません。はい、ビデオは私のsrcコードフォルダーと同じディレクトリにあります。私が見ている唯一のことは、while ループの最初の反復で、フレームが空であるため壊れていることです。しかし、ビデオがvlcで動作しているため、なぜそれが起こっているのかわかりません。過去4〜5時間立ち往生しているので、ここで助けていただければ幸いです。#include "cv.h" // 使用するメインの OpenCV 関数にインクルードします。#include "highgui.h" //GUI 機能を使用するためにインクルードします。

int main(int argc, char** argv)
{
cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);

//CvCapture* capture = cvCreateFileCapture("20051210-w50s.flv");
CvCapture* capture = cvCreateFileCapture("tree.avi");
/* if(!capture)
    {
        std::cout <<"Video Not Opened\n";
        return -1;
    }*/
IplImage* frame = NULL;

while(1) {

    frame = cvQueryFrame(capture);
    //std::cout << "Inside loop\n";
    if (!frame)
        break;
    cvShowImage("Example3", frame);
    char c = cvWaitKey(33);
    if (c == 27) break;
}
cvReleaseCapture(&capture);
cvDestroyWindow("Example3");
std::cout << "Hello!";
return 0;
}
4

2 に答える 2

0

コード行を削除します。

char c = cvWaitKey(33);
if (c == 27) break;

これらの代わりに、次を追加するだけです:

cvWaitKey(33);

これが役立つかもしれません.Hereはpythonコードで、私にとってはうまくいきました:

import cv
if __name__ == '__main__':
  capture = cv.CreateFileCapture('Wildlife.avi')
  loop = True
  while(loop):
    frame = cv.QueryFrame(capture)
    if (frame == None):
            break;
    cv.ShowImage('Wild Life', frame)
    char = cv.WaitKey(33)
    if (char != -1):
        if (ord(char) == 27):
            loop = False

または、これが役立つ場合があります。

于 2014-07-02T09:56:52.687 に答える