2015-11-22 125 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秒之久。 我在做什么错?

编辑: 我试过.avi扩展,DIVX编解码器和它的工作。任何想法如何使它在.webm上工作?或.gif

+0

你为什么讨厌字符串? :D – Miki

+0

为什么你需要'usleep(...)'?你已经在构造函数中设置了fps。尝试'outputVideo.write(temp.clone());'只是为了确保... – Miki

+0

usleep也是肯定的。克隆不起作用。 – notgiorgi

回答