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