创建一个视频从图像序列在开放cv



我正在用c++开发cv。我有大约30帧的图像,我需要将这些帧组合起来以获得视频。谁能给我一个建议吗?是不是像阅读每一帧然后存储在录像机里?请建议

建议使用ffmpeg。您可以通过编程方式或使用命令行来完成。在命令行上这样做的一个示例是:

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

其中n为第一个图像号

视频输出教程

系统将要求您输入要使用的编解码器。这有点复杂,但是已经有很多关于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;
}

相关内容

  • 没有找到相关文章

最新更新