在open cv中创建一个来自图像序列的视频

时间:2014-03-28 04:31:04

标签: c++ opencv video

我正在使用c ++打开cv。我有大约30帧的图像。我需要组合这些帧来获取视频。任何人都可以建议我使用方法吗?是否喜欢阅读每个帧并存储在视频记录器中?请提示

2 个答案:

答案 0 :(得分:1)

我建议使用ffmpeg。您可以通过编程方式或使用命令行执行此操作。在命令行上执行此操作的示例是:

ffmpeg -start_number n -i image%d.jpg -vcodec mpeg4 test.avi

其中n是第一个图像编号。

答案 1 :(得分:0)

Tutorial how to do Videooutput

系统会要求您输入要使用的编解码器。它有点复杂,但在SO上已经有很多与编解码器相关的问题。

此代码应该有效(未经测试):

#include <iostream> // for standard I/O
#include <string>   // for strings
#include <vector>
#include <opencv2/core/core.hpp>        // Basic OpenCV structures (cv::Mat)
#include <opencv2/highgui/highgui.hpp>  // Video write

using namespace std;
using namespace cv;

int main(int argc, char *argv[], char *window_name){
    vector<Mat> images; //fill this somehow
    Size S = vector[0].getSize();    

    VideoWriter outputVideo;  // Open the output
    outputVideo.open(NAME  , ex=-1, 30), S, true);  //30 for 30 fps

    if (!outputVideo.isOpened()){
        cout  << "Could not open the output video for write: "<< endl;
        return -1;
    }

    for(int i=0; i<images.size(); i++){
        outputVideo << res;
    }

    cout << "Finished writing" << endl;
    return 0;
}