opencv学习笔记三 视频处理序列(1)读取视频序列

读取视频序列


/**********************************************************************************************
VideoCapture cap("D:/1.avi")			读取文件到cap
cap.isOpened()							文件打开为真
double rate = cap.get(CV_CAP_PROP_FPS)	得到cap的double类型的帧率
cap.read(frame)							读取cap视频帧到frame,成功则返回真值
waitKey(delay)							delay大于零返回-1(延时后,因为int a= waitKey(10)需要先延时10ms再赋值)
,有按键按下返回按键值
delay小于0返回-1,有按键按下返回按键值
cap.release()							关闭cap视频
**********************************************************************************************/

#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main()
{
	//VideoCapture cap("D:/1.avi");							//VideoCapture定义 视频文件
	VideoCapture cap;										//也可以用open方法
	cap.open("D:/1.avi");
	//检查是否成功打开
	if (!cap.isOpened())									//cap.isOpened()为真则成功打开了文件
	{
		cout << "Can not open a camera or file." << endl;
		return -1;
	}
	double rate = cap.get(CV_CAP_PROP_FPS);					//cap.get(CV_CAP_PROP_FPS)获得视频的帧率,返回double型
	bool stop(false);
	Mat frame;												//定义帧
	namedWindow("Extract frame");							//定义窗口
	int delay = 1000 / rate;									//每个帧相隔的时间
	while (!stop)
	{
		if (!cap.read(frame))								//cap.read(frame)读取帧,成功则返回真值
			break;
		imshow("Extract frame", frame);						//
		if (waitKey(delay) >= 0)							//waitKey(delay)   无按键返回-1,有按键返回按键值
			stop = true;									//
	}
	cap.release();											//关闭视频文件
	return 0;
}
/**********************************************************************
知识点:

1.打开视频
VideoCapture cap("D:/1.avi");
也可以用open方法打开
VideoCapture cap;
cap.open("D:/1.avi");
打开后需要判断是否成功打开
cap.isOpened()		成功打开为真
移动视频到特定的帧(跳至100帧)
double position = 100.0
capture.set(CV_CAP_PROP_POS_FRAMES, position)
以毫秒的方式指定位置播放
double time = 10.0
capture.set(CV_CAP_PROP_POS_MSEC, time)
指定相对位置进行播放(0.0对于开始,1.0对应结尾)
double position = 0.5
capture.set(CV_CAP_PROP_POS_AVI_RATIO, position)
参数设置成功则返回Ture

2.读取帧
在视频成功打开之后
可以反复调用read方法读取视频帧
cap.read(frame)		成功读取下一个帧则返回真值
也可以调用重载过的操作符
cap >> frame;

3.waitKey()
if (waitKey(delay) >= 0)
stop = true;
有按键按下则中断,没有按键按下则延时delay(ms)
**********************************************************************/












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值