Отображение видео с помощью opencv - PullRequest
1 голос
/ 03 октября 2011

У меня есть небольшая проблема с "отображением видео с помощью opencv".Код написан на C ++ с Visual Studio 2008.

вот код:

int main( int argc, char** argv ) 
{
    cvNamedWindow( "xample2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( "Micro-dance_2_.avi" );
    IplImage* frame;
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "xample2", frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "xample2" );
}

при отладке, программа запускается, и я вижу окно команд и серое окно (видео должно отображаться, я полагаю) в течение нескольких миллисекунд.Затем оба окна закрываются.

вывод из окна отладки в визуале показывает следующее:

...(много загруженных и выгруженных dll).,.

Программа '[3684] 2aufg4) .exe: Native' завершила работу с кодом 0 (0x0).

Я не знаю, что я делаю неправильно ...

Я был бы очень признателен за вашу помощь!

как всегда, ребята, спасибо

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Вам необходимо проверить возврат cvCreateFileCapture() и убедиться, что он успешно загрузил файл:

#include <cv.h>
#include <highgui.h>

int main(int argc, char** argv) 
{
    cvNamedWindow("xample2", CV_WINDOW_AUTOSIZE);
    CvCapture* capture = cvCreateFileCapture( "Micro-dance_2_.avi" );
    if (!capture)
    {
      std::cout << "!!! cvCreateFileCapture didn't found the file !!!\n";
      return -1; 
    }

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

        cvShowImage("xample2", frame);

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

    cvReleaseCapture(&capture);
    cvDestroyWindow("xample2");
}
0 голосов
/ 03 октября 2011

Попробуйте это

int main( int argc, char** argv ) 
{
    cvNamedWindow( "xample2", CV_WINDOW_AUTOSIZE );
    CvCapture* capture = cvCreateFileCapture( "Micro-dance_2_.avi" );
    IplImage* frame;
    if(!cvQueryFrame( capture )){
        std::cout << "Could not open file\n";
        return -1; 
    }
    while(1) {
        frame = cvQueryFrame( capture );
        if( !frame ) break;
        cvShowImage( "xample2", frame );
        char c = cvWaitKey(33);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture );
    cvDestroyWindow( "xample2" );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...