- 功能:用于打开指定视频文件,并将视频文件一帧帧显示并写入指定文件。
1 #include "opencv2/opencv.hpp" 2 #include "opencv2/highgui.hpp" 3 4 using namespace std; 5 6 int main() 7 { 8 //创建视频捕获对象,0打开默认摄像头,文件名指定视频文件 9 cv::VideoCapture video("FIFA.mp4"); 10 11 //检查视频是否正常打开 12 if (!video.isOpened()) 13 { 14 cout << "不能打开指定文件" << endl; 15 return -1; 16 } 17 18 //创建图像矩阵保存一帧数据 19 cv::Mat frame; 20 21 //获取视频解决方案 22 int frameWidth = video.get(cv::CAP_PROP_FRAME_WIDTH); 23 int frameHeight = video.get(cv::CAP_PROP_FRAME_HEIGHT); 24 25 //获取编解码方式 26 int fourcc = video.get(cv::CAP_PROP_FOURCC); 27 28 //获取帧速率 29 int fps = video.get(cv::CAP_PROP_FPS); 30 31 cv::Size size = cv::Size(frameWidth, frameHeight); 32 33 //创建视频写入对象 34 cv::VideoWriter output("output.mp4", fourcc, fps, size); 35 36 //循环每一帧数据并显示 37 while (video.read(frame)) 38 { 39 //展现一帧数据 40 cv::imshow("Video feedback", frame); 41 //写入一帧数据 42 output.write(frame); 43 //循环终止条件 44 if (cv::waitKey(25) >= 'q') 45 break; 46 } 47 48 //释放视频写入对象和捕获对象 49 video.release(); 50 output.release(); 51 52 //清除所有窗口 53 cv::destroyAllWindows(); 54 return 0; 55 }
- 注:视频写入对象的后缀名和视频捕获对象的后缀名必须相同,否则,程序将写入失败。