2010-02-18 3 views
2

Я пытаюсь использовать OpenCV для записи видеофайла. У меня есть простая программа, которая загружает кадры из видеофайла, а затем принимает их для сохранения.Попытка написать видеофайл с помощью OpenCV

Сначала cvCreateVideoWrite всегда возвращает NULL. Я получил ответ от вашей группы, говорящий, что он возвращает отдельные изображения, и чтобы попытаться изменить имя файла на test0001.png, это сработало.

Но теперь функция cvWriteFrame всегда терпит неудачу, код

CString path; 
path="d:\\mice\\Test_Day26_2.avi"; 

    CvCapture* capture = cvCaptureFromAVI(path); 
    IplImage* img = 0; 

CvVideoWriter *writer = 0; 
int isColor = 1; 
int fps  = 25; // or 30 
int frameW = 640; // 744 for firewire cameras 
int frameH = 480; // 480 for firewire cameras 
writer=cvCreateVideoWriter("d:\\mice\\test0001.png",CV_FOURCC('P','I','M','1'), 
          fps,cvSize(frameW,frameH),isColor); 
if (writer==0) 
    MessageBox("could not open writter"); 

int nFrames = 50; 
for(int i=0;i<nFrames;i++){ 
    if (!cvGrabFrame(capture)) 
    MessageBox("could not grab frame"); 
    img=cvRetrieveFrame(capture); // retrieve the captured frame 
    if (img==0) 
    MessageBox("could not retrive data"); 
    if (!cvWriteFrame(writer,img)) 
    MessageBox("could not write frame"); 
} 
cvReleaseVideoWriter(&writer); 
+1

Какой код исключения или ошибки вы получаете? Вы отлаживали и проверяли значения img и writer? Правильны ли они? –

+0

У меня есть аналогичный вопрос [здесь] (http://stackoverflow.com/questions/903753/opencv-cvcreatevideowriter-always-returns-null) на SOF. Ответ и комментарии могут вам помочь. – rics

ответ

1

Попробуйте CV_FOURCC('D', 'I', 'V', 'X'), CV_FOURCC('f', 'f', 'd', 's')*.avi файла) или CV_FOURCC_DEFAULT*.mpg). Видеозапись по-прежнему довольно грязная в opencv> _>

0

Я видел много проблем с записью видео в OpenCV. Я нашел, что формат Intel iYUV хорошо работает для того, что мне нужно.

0

Была ли ваша библиотека построена с использованием HAVE_FFMPEG? Если бы не было, возможно, потребуется перекомпилировать OpenCV с этим option.You должны увидеть что-то вроде этого на этапе конфигурирования:

... 
Video I/O-------------- 
Use QuickTime  no 
Use xine   no 
Use ffmpeg:  yes 
Use v4l   yes 
... 

Если у вас нет FFmpeg, вы можете получить его от here.

Смежные вопросы