编码环境:
macOs : 10.15.5
opencv : 4.4.0
1. 编码:
1 #include <stdio.h> 2 #include <string> 3 #include <opencv2/core/core.hpp> 4 #include <opencv2/opencv.hpp> 5 #include <iostream> 6 #include <opencv2/videoio.hpp> 7 8 using namespace std; 9 using namespace cv; 10 11 int main(int argc, char const *argv[]) 12 { 13 14 // 定义视频的宽度和高度 15 Size s(320,240); 16 // 指定编解码器 (如果opencv的版本是旧版本,则使用CV_FOURCC('M','J','P','G')) 17 int fourcc=VideoWriter::fourcc('M','J','P','G'); 18 19 string videoFile="/Users/mac/Desktop/my_video_001.avi"; 20 // 定义writer, 并指定FOURCC及 FPS等参数 21 VideoWriter writer = VideoWriter(videoFile,fourcc,25,s); 22 // 检查是否创建成功 23 if(!writer.isOpened()){ 24 cerr << "can not create video file "+videoFile << endl; 25 return -1; 26 } 27 28 //视频帧 29 Mat frame(s,CV_8UC3); 30 31 for(int i=0;i<100;i++){ 32 33 // 将图像设置为黑色 34 frame=Scalar::all(0); 35 // 将整数i转为i字符串类型 36 char text[128]; 37 snprintf(text,sizeof(text),"%d",i); 38 39 // 将数字绘到画面上 40 putText(frame,text,Point(s.width/3,s.height/3),FONT_HERSHEY_SCRIPT_SIMPLEX,3,Scalar(0,0,255),3,8); 41 // 将图像写入视频 42 writer << frame; 43 } 44 45 // 退出时程序会自动关闭视频文件 46 return 0; 47 }
2. 创建 build目录 、 CMakeLists.txt
build目录是用来保存编译工程中的中间输出文件; CMakeLists.txt是cmake用来进行编译所需的配置项,内容如下:
1 project(writeVideo) 2 set(SRC_LIST writeVideo.cc) 3 add_executable(writeVideo ${SRC_LIST}) 4 find_package(OpenCV REQUIRED) 5 target_link_libraries(writeVideo ${OpenCV_LIBS})
3. 进入build目录后,执行 cmake .. (注意有2个".",表示cmake读取的文件是在父目录),会在当前目录生成一些中间文件
4. 在build目录中执行 make 命令,生成可执行文件
5. 运行可执行文件,即可生成视频文件