Opencv 学习 - 视频操作

本文介绍如何使用VideoCapture类的get和set方法来获取和设置视频的各种属性,包括帧宽高、帧率、帧计数等,并提供了示例代码展示如何打开视频、读取帧并进行基本的视频播放控制。
VideoCapture::get()
VideoCapture::get(int id)
	id:
	**	CV_CAP_PROP_POS_MSEC      // 视频文件的当前位置(以毫秒为单位)或视频捕获时间戳。
		CV_CAP_PROP_POS_FRAMES    // 接下来要解码/捕获的帧的基于0的索引。
		CV_CAP_PROP_POS_AVI_RATIO // 视频文件的相对位置:0 - 电影的开始,1 - 电影的结尾。
		CV_CAP_PROP_FRAME_WIDTH   // 帧的宽度。
		CV_CAP_PROP_FRAME_HEIGHT  // 帧的高度。
	**	CV_CAP_PROP_FPS           // 帧速率。
		CV_CAP_PROP_FOURCC        // 编解码器的4字符代码。
	**	CV_CAP_PROP_FRAME_COUNT   // 总帧数。
		CV_CAP_PROP_FORMAT        // 返回的Mat对象的格式 retrieve() 。
		CV_CAP_PROP_MODE 指示当前捕获模式的特定于后端的值。
		CV_CAP_PROP_BRIGHTNESS 图像的亮度(仅适用于相机)。
		CV_CAP_PROP_CONTRAST 图像对比度(仅适用于相机)。
		CV_CAP_PROP_SATURATION 图像的饱和度(仅适用于相机)。
		CV_CAP_PROP_HUE 图像的色调(仅适用于相机)。
		CV_CAP_PROP_GAIN 图像的增益(仅适用于相机)。
		CV_CAP_PROP_EXPOSURE 曝光(仅适用于相机)。
		CV_CAP_PROP_CONVERT_RGB 布尔标志,指示是否应将图像转换为RGB。
		CV_CAP_PROP_WHITE_BALANCE_U 白平衡设置的U值(注意:目前仅支持DC1394 v 2.x后端)
		CV_CAP_PROP_WHITE_BALANCE_V 白平衡设置的V值(注意:目前仅支持DC1394 v 2.x后端)
		CV_CAP_PROP_RECTIFICATION 立体摄像机的整流标志(注意:目前仅支持DC1394 v 2.x后端)
		CV_CAP_PROP_ISO_SPEED摄像机 的ISO速度(注意:目前仅支持DC1394 v 2.x后端)
		CV_CAP_PROP_BUFFERSIZE 存储在内部缓冲存储器中的帧数(注意:目前仅支持DC1394 v 2.x后端)
VideoCapture::set()
VideoCapture::set(int id,double value)
	id:
	**	CV_CAP_PROP_POS_MSEC   	  // 视频文件的当前位置(以毫秒为单位)或视频捕获时间戳。
		CV_CAP_PROP_POS_FRAMES    // 0-based index of the frame to be decoded/captured next.
		CV_CAP_PROP_POS_AVI_RATIO // Relative position of the video file: 0 - start of the film, 1 - end of the film.
		CV_CAP_PROP_FRAME_WIDTH   // Width of the frames in the video stream.
		CV_CAP_PROP_FRAME_HEIGHT  // Height of the frames in the video stream.
		CV_CAP_PROP_FPS           // 帧率
		CV_CAP_PROP_FOURCC 4-character code of codec.
		CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
		CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
		CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
		CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
		CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
		CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
		CV_CAP_PROP_HUE Hue of the image (only for cameras).
		CV_CAP_PROP_GAIN Gain of the image (only for cameras).
		CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
		CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
		CV_CAP_PROP_WHITE_BALANCE Currently unsupported
		CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
(无用代码)
	VideoCapture video;
	video.open("视频路径"); // video.open(1); 表示从摄像头读取数据
	// 判断视频是否加载成功
	if (!video.isOpened())
	{
		cout << "打开视频失败" << endl;
	}else
	{
		cout << "打开视频成功" << endl;
		
		// 获取视频属性
		cout << video.get(CAP_PROP_FRAME_COUNT) << endl;

		// 读取视频:视频 》 图片
		while(1)
		{
			Mat flame;
			video >> flame;
			// 如果图片读取结束,推出循环
			if(flame.empty())
			{
				break;
			}
			
			// 添加对每一帧图像的处理代码:
			...
			...
			// 以下为显示原视频的代码:
			imshow("播放视频", frame); // 显示当前帧
			uchar kdown = waitKey(1000 / video.get(CAP_PROP_FPS));// 控制两帧之间的时间间隔,从而实现快放和慢放,其中video.get(CAP_PROP_FPS)表示获得视频帧率,即原视频中每秒的图片张数。
			// 如果在播放过程中,键盘按下 q ,则退出播放视频
			if(kdown == 'q')
			{
				break;
			}
		}
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值