我正在用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;
}