目录
1、VideoCapture类
2、视频属性get()
3、视屏文件保存
1、VideoCapture类
2、视频属性get()

3、视屏文件保存

//视频的读取保存
int test3()
{
	VideoCapture video;
	//video.open("F:/testMap/lolTFT.mp4");//读取视频
	video.open(0);//读取摄像头
	if (!video.isOpened())
	{
		cout << "打开失败,请检查摄像头或文件" << endl;
		return -1;
	}
	cout << "视频帧率="<<video.get(CAP_PROP_FPS) << endl; 
	cout << "视频宽度=" << video.get(CAP_PROP_FRAME_WIDTH) << endl;
	Mat img;
	video >> img;//获取图像
	//检测是否成功获取图像
	if (img.empty())//判断有没有读取图像成功
	{
		cout << "没有获取到图像"<< endl ;
		return -1;
	}
	bool isColpr = (img.type() == CV_8UC3);//判断相机(视频)类型是否为彩色
	VideoWriter writer;
	int codec = VideoWriter::fourcc('M', 'J','P','G'); //选择编码格式
	double fps = 25.0;//设置视频帧率
	string filename = "F:/testMap/live.avi";//保存的视频文件名称
	writer.open(filename,codec,fps,img.size(),true);//创建保存视频文件的视频流
	if (!writer.isOpened())//判断视频流是否创建成功
	{
		cout << "打开视频文件失败,请确实是否为合法输入" << endl;
		return -1;
	}
	//通过摄像头保存视屏
	while (1)
	{
		//检测是否执行完毕
		if (!video.read(img))//判断能都继续从摄像头或者视频文件中读出一帧图像
		{
			cout << "摄像头断开连接或者视频读取完成" << endl;
			break;
		}
		writer.write(img); //把图像写入视频流
		writer << img;
		imshow("Live", img); //显示图像
		char c = waitKey(50);
		if (c == 27)//按ESC案件退出视频保存
			break;
	}
	//读取视频播放
	//while (true)
	//{
	//	Mat frame;
	//	video >> frame;//把视频当前帧传给frame
	//	if (frame.empty())
	//	{
	//		break;
	//	}
	//	imshow("video",frame);
	//	uchar c = waitKey(1000 / video.get(CAP_PROP_FPS) /2);//2倍速播放
	//	//按q退出
	//	if (c == 'q')
	//	{
	//		break;
	//	}
	//}
}



















