Не удалось перехватить файл avi с помощью opencv

Я новичок в компиляции C++. Я пытаюсь решить простую проблему, используя opencv, где я читаю видеофайл и отображаю его.

Мой код выглядит так:

#include <opencv/cv.h>
#include <opencv/highgui.h>
#include "opencv2/opencv.hpp"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>


#include <ctype.h>
#include <unistd.h>

#include <algorithm>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <fstream>
#include <iostream>
#include <vector>
#include <list>
#include <string>


using namespace cv;

IplImage* image = 0; 
IplImage* prev_image = 0;

int show = 1; 

int main( int argc, char** argv )
{
    int frameNum = 0;

    char* video = argv[1];
    VideoCapture capture(video);

    if( !capture.isOpened() ) { 
        printf( "Could not initialize capturing..\n" );
        return -1;
    }

    if( show == 1 )
        cvNamedWindow( "Video", 0 );

    while( true ) {
        IplImage* frame = 0;
        int i, j, c;

        // get a new frame
        //frame = cvQueryFrame( capture );
        Mat mat_img;
        capture >> mat_img;
        IplImage frame1 = mat_img.operator IplImage();
        frame = &frame1;
        if( !frame )
            break;

        if( !image ) {
            image =  cvCreateImage( cvSize(frame->width,frame->height), 8, 3 );
            image->origin = frame->origin;
        }

        cvCopy( frame, image, 0 );

        if( show == 1 ) {
            cvShowImage( "Video", image);
            c = cvWaitKey(3);
            if((char)c == 27) break;
        }

        std::cerr << "The " << frameNum << "-th frame" << std::endl;
        frameNum++;
    }

    if( show == 1 )
        cvDestroyWindow("Video");

    return 0;
}

Затем я компилирую это так:

g++ test.cpp -o Video -pipe -D __STDC_CONSTANT_MACROS -D STD=std -Wall -I. -I/usr/local/ -O3 -DNDEBUG -ggdb -L/usr/local/ -lopencv_core -lopencv_highgui -lopencv_video -lopencv_imgproc -lavformat -lavdevice -lavutil -lavcodec -lswscale

Компиляция работает нормально и ошибок не возвращается.

Однако, когда я запустил его, я получил:

(Video:5651): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed
Could not initialize capturing..

Немного другой информации: 1. Я тестирую свои opencv и ffmpeg, используя простые примеры, которые хорошо работают. 2. Я могу передавать кадры со своей камеры и отображать их с помощью opencv.

Кто-нибудь имеет представление о причинах этого?

Любая идея приветствуется.

0 ответов

Другие вопросы по тегам