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 * работает отлично.
Кто-нибудь имеет представление о том, что происходит?