测试代码如下:
功能:读取视频,缩小处理后再存为另一个视频。
方法1:
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h> // 适用于定义namedWindow 显示框
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
VideoCapture cam("/home/wsy/data/lane_video3.mp4");;//读入
int fps = 60;// 改变帧率,加快播放速度
Size size = Size(640,360);//size一定要和frame尺寸匹配
int codec = cv::VideoWriter::fourcc('H','2','6','4'); // H264可生成适用于网页播放的视频
VideoWriter writer;
writer.open("../samples/result.mp4", codec, fps, size);
Mat frame;
cam >> frame;
namedWindow("show", CV_WINDOW_AUTOSIZE);
for (; !frame.empty(); cam >> frame)
{
cv::resize(frame, frame2, cv::Size(640, 360));
imshow("show", frame2);
writer.write(frame2); // 写入需要保存的视频当中
char c = waitKey(10); 展示当前namedWindow显示的时间间隔
}
cam.release();
writer.release();
return 0;
}
方法2:
int main()
{
// 读取视频数据
cv::VideoCapture capture("/home/wsy/test.mp4");
if (!capture.isOpened()){
return -1;
}
cv::Mat frame;
capture >> frame;
// 写入视频
cv::VideoWriter writer;
bool isColor=(frame.type()==CV_8UC3);//判断相机(视频)是否为彩色
// int coder = cv::VideoWriter::fourcc('H','2','6','4');//选择编码格式
int coder = cv::VideoWriter::fourcc('M','J','P','G');//选择编码格式
double fps=25.0;//设置视频帧率
std::string filename="result.avi";//保存的视频文件名称
writer.open(filename,coder,fps,frame.size(),isColor);//创建保存视频文件的视频流
while (!frame.empty())
{
// string output = "./video/image/" + to_string(imgIndex) + ".jpg";
capture >> frame;
cv::resize(frame, frame2, cv::Size(640, 360));
imshow("show", frame2);
writer.write(frame2); // 写入需要保存的视频当中
}
frame.release();
writer.release();
return 0;
}