Opencv VideoWriter只保存一帧

Opencv VideoWriter saves only one frame

本文关键字:一帧 VideoWriter 保存 Opencv      更新时间:2023-10-16

我正在尝试从两个图像创建1fps-webm,代码:

    // 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

应该是

usleep(1000000);

由于usleep参数是以微秒为单位给出的,您可以在这里阅读。