OpenCV VideoWriter ничего не напишет, хотя cvWriteToAVI делает

Я пытался захватить видео с камеры и записать его в файл AVI. Я использую Qt 4.8.2 с MSVC 2010 (x86) в Windows 7. У меня есть 2 версии кода: одна использует cv :: Mat, а другая - IplImage *. Однако работает только версия IplImage *. Вот мой код с использованием cv :: Mat:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main() {
    VideoCapture* capture2 = new VideoCapture( CV_CAP_DSHOW );
    Size size2 = Size(640,480);
    int codec = CV_FOURCC('M', 'J', 'P', 'G');
    VideoWriter* writer2 = new VideoWriter("video.avi",codec,15,size2);

    int a = 100;
    Mat frame2;
    while ( a > 0 ) {
        capture2->read(frame2);
        writer2->write(frame2);
        a--;
    }

    writer2->release();
    capture2->release();
    return 0;
}

А вот и код, использующий IplImage *:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main() {
    CvCapture* capture = cvCaptureFromCAM( CV_CAP_DSHOW );
    CvSize size = cvSize(640,480);
    int codec = CV_FOURCC('M', 'J', 'P', 'G');
    CvVideoWriter* writer = cvCreateVideoWriter("video.avi",codec,15,size);

    int a = 100;
    while ( a > 0 ) {
        IplImage* frame = cvQueryFrame( capture );
        cvWriteToAVI(writer,frame);
        a--;
    }

    cvReleaseVideoWriter(&writer);
    cvReleaseCapture( &capture );
    return 0;
}

Это в основном то же самое, или, по крайней мере, для меня это выглядит так же. Он читает 100 кадров и должен записать их в «video.avi». Он компилируется и работает без ошибок, но версия cv :: Mat ничего не записывает, а версия IplImage * работает отлично.

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

Ответы на вопрос(3)

Ваш ответ на вопрос