2015-11-22 3 views
1

Я пытаюсь создать 1fps WebM из двух изображений, Код:OpenCV VideoWriter сохраняет только один кадр

// path to output 
    string outputVideoPath = "/home/gio/Desktop/giffer/def.webm"; 
    // write dimensions in size struct 
    Size dims = Size(640,480); 

    // create and open VideoWriter object 
    VideoWriter outputVideo; 
    outputVideo.open(outputVideoPath, CV_FOURCC('V','P','8', '0'), 1, dims, true); 

    // check if opened 
    if(!outputVideo.isOpened()){ 
     cout << "Creating outputVideo fail" << endl; 
     return -1; 
    } 

    // I hate strings 
    string paths[2]; 
    paths[0] = "/home/gio/Desktop/giffer/images_temp/g0.jpg"; 
    paths[1] = "/home/gio/Desktop/giffer/images_temp/g1.jpg"; 

    for (int i = 0; i < 2; i++) { 
     cout << paths[i] << endl; 
     Mat temp = imread(paths[i]); 
     outputVideo.write(temp); 
     usleep(10000); 
    } 

Результатом является только рама (последнее изображение), 1 секунд. Что я делаю неправильно?

EDIT: Я пытался на .avi расширения, DIVX кодек и он работал. Любые идеи, как заставить его работать на .webm? или .gif

+0

Почему вы ненавидите строки? : D – Miki

+0

Зачем вам 'usleep (...)'? Вы уже установили fps в конструкторе. Попробуйте 'outputVideo.write (temp.clone()),' просто чтобы быть уверенным ... – Miki

+0

usleep для уверенности тоже. клон не работает. – notgiorgi

ответ

1

Это должно быть

usleep(1000000); 

Поскольку usleep параметр задается в микросекундах, как вы can read here.

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