视频处理与保存
视频的属性,SD(标清),HD(高清),UHD(超清),蓝光。如何读取视频文件,以及读取视频文件的属性,衡量视频处理指标:FPS。保存视频时的编码格式。保存视频的实际size和create的size大小保持一致。
void QuickDemo::video_demo(Mat &image) {
//VideoCapture capture(0);//调用摄像头
VideoCapture capture("E:/images/01.mp4");//调用视频文件
int frame_width = capture.get(CAP_PROP_FRAME_WIDTH);//获得视频宽度
int frame_height = capture.get(CAP_PROP_FRAME_HEIGHT);//获得视频高度
int count = capture.get(CAP_PROP_FRAME_COUNT);//总的帧率
double fps = capture.get(CAP_PROP_FPS);//每秒的帧率
cout << "frame width:" << frame_width << endl;
cout << "frame height:" << frame_height << endl;
cout << "Number of Frames:" << count << endl;
cout << "FPS:" << fps << endl;
VideoWriter writer("D:/test.mp4", capture.get(CAP_PROP_FOURCC), fps, Size(frame_width, frame_height), true);//保存
Mat frame;
while (true)
{
capture.read(frame);//读取文件后存储在frame中
flip(frame,frame,1);//翻转函数
if (frame.empty()) {//如果视频文件为空退出
break;
}
colorSpace_Demo(frame);//色彩空间转换函数
writer.write(frame);//视频保存
imshow("frame",frame);
int c = waitKey(1);//延时
if (c == 27) {
break;//退出
}
}
//release
capture.release();//释放空间
}
本文介绍如何通过C++的OpenCV库读取视频文件,测量FPS,并探讨视频编码格式的选择,确保保存后的视频大小一致性。详细讲解了SD、HD、UHD不同清晰度视频的处理和VideoWriter的使用实例。
1987





