读取视频流的方法

void QuickDemo::video_demo(Mat &img)
{
	// 读取视频需要调用api 产生一个对象,并调用对象中的方法
	VideoCapture capture("E:/data/vtest.avi");
	Mat frame;
	while (1)
	{
		capture.read(frame);
		flip(frame, frame, 1);
		if (frame.empty())
		{
			break;
		}
		imshow("frame", frame); 
		char c = waitKey(10);
		if (c == 27)
		{
			break;
		}
	}
}

视频处理保存

void QuickDemo::video_demo(Mat &img)
{
	// 读取视频需要调用api 产生一个对象,并调用对象中的方法
	VideoCapture capture("E:/data/vtest.avi");
	Mat frame;
	int fw = capture.get(CAP_PROP_FRAME_WIDTH);
	int fh = capture.get(CAP_PROP_FRAME_HEIGHT);
	int fc = capture.get(CAP_PROP_FRAME_COUNT);
	double fps = capture.get(CAP_PROP_FPS);
	std::cout << "视频的宽度为:" << fw << " " << "视频的高度为" << fh << " " << endl;
	std::cout << "视频的总帧数为" << fc << endl;
	std::cout << "视频的fps为" << fps<<endl;
	VideoWriter writer("E:/data-output/output1.avi", capture.get(CAP_PROP_FOURCC), fps,Size(fw, fh), true);
		//保存视频的api(要保存的路径及其文件名,编码方式,)
	while (1)
	{
		capture.read(frame);
		if (frame.empty())
		{
			break;
		}
		flip(frame, frame, 1);
		cvtColor(frame, frame, COLOR_BGR2GRAY);
		writer.write(frame);
		imshow("frame", frame); 
		char c = waitKey(5);
		if (c == 27)
		{
			break;
		}
	}
	capture.release();
	writer.release();
}

视频处理小案例

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐