【OpenCV笔记】Video Capture类——读取视频

本文详细介绍了使用OpenCV进行视频处理的基本步骤,包括视频文件的打开与检查、获取视频帧数与帧率、跳转到指定帧、显示及读取视频帧等内容,并展示了如何应用均值滤波进行简单的视频噪声去除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、打开视频文件

Video Capture cap("   ");

     检查是否打开

.isOpened()

2、获取视频整个帧数

code1:针对AVI

long int numFrame=cap.get(CV_CAP_PROP_FRAME_COUNT);
code2:针对经转换过的视频
IplImage *pImg=NULL;
int count=0;
while((pImg=cvQueryFrame(cap))!=NULL)
{count++;}

3、跳至100帧

double position=100.0;

capture.set(CV_CAP_PROP_POS_FRAMES,position);

4、获取帧率

double rate = capture.get(CV_CAP_PROP_FPS);

5、显示每一帧的窗口

namedWindow("   ");
6、每帧之间的延迟与视频帧率相对应
int delay = 1000/rate;
7、读取下一帧
capture.read(frame);//重复调用read
capture>>frame;//调用重载过的操作符
capture.grab();//捕获下一帧
capture.retrieve(*frame);//对该帧进行解码

8、窗口显示当前帧

imshow("   ",frame);

9、引入延迟

waitkey(int delay-0);

当delay<=0时永远等待,当delay>0时等待delay毫秒

返回按键ASCII码

10、按下按键后停留在当前帧等待下次按键(逐帧检验)

if(waitkey(delay)>=0)
  waitkey(0);

11、通过按下指定按键停止

if((char)waitkey(delay)==27)
  stop=true;

12、关闭视频文件(将由析构函数调用,非必须)

capture.release();

13、均值滤波处理

int kernel_size=3;
Mat kernel=Mat::ones(kernel_size,kernel_size,CV_32F)/(float)(kernel_size*kernel_size); 
filter2D(frame, frame, -1, kernel); //卷积滤波程序




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值