opencv(6):视频操作基础

VideoCapture是OpenCV2.X中新增的一个类,对应于之前C语言版本的Capture结构体。它提供了从摄像机或视频文件捕获视频的C++接口,作用是从视频文件或从摄像头捕获视频并显示出来。

  1. 读取并播放视频
    通过对VideoCapture类的分析,可以发现利用它读入视频的方法一般有如下两种。比如读入的视频为工程路径下名为"l.avi”的视频文件,那么这两种写法
    分别如下。
    (1)先实例化再初始化:
    VideoCapture capture
    capture.open("1.avi")
    
    (2)在实例化的同时进行初始化:
    VideoCapture capture(“1.avi”)
    这两种写法的区别就如我们定义一个int类型的变量一样:"int a;a=1;”为先定义再初始化:"int a=1;”为在定义时初始化。
    视频读入到VideoCapture类对象之后,紧接着可以用一个循坏将每一帧显示出来,相关代码如下:
    //循环显示每一帧
    while(1)
    {
    	Matframe;//定义一个Mat变量,用于存储每一帧的图像
    	capture>>frame://读取当前帧
    	imshow("读取视頻",frame)//显示当前帧
    	//延时30ms
    	waitKey(30)}
    
    这段代码中,首先定义了一个Mat变量,用于存储每一帧的图像,接着读取当前帧到Mat变量中,然后调用imshow显示当前的这一帧图像,并用waitKey
    延时30毫秒,开始下一次循环。
    #include<opencv2\opencv.hpp>
    using namespace cv;
    int main(){
    	//读入视频
    	VideoCapture capture("mingchangmian.mp4");
    	//显示每一帧
    	while (1)
    	{
    		Mat frame;
    		capture >> frame;
    		imshow("名场面", frame);
    		waitKey(30);
    	}
    	return 0;
    }
    
    程序运行截图:
  2. 调用摄像头采集图像
    如果我们要调用摄像头进行视频采集的话,将代码VideoCapture capture("mingchangmian.mp4”);的"mingchangmian.mp4”换为0就可以了,表示
    调用摄像头而不是从文件中读取视频。对应于上文讲到的两种写法,即:
    (1)先实例化再初始化
    VideoCapture capture;
    capture.open(0);
    (2) 在实例化的同时进行初始化
    VideoCapture capture(0);
    可以发现,利用VideoCapture类调用摄像头采集视频和从文件中读入视频的区别仅仅是在VideoCapture类对象初始化时指定的内容的区别,即,是指定文件名如“mingchangmian.mp4”,还是填一个0表示调用摄像头而已。接下来让我们一起看看用Opencv调用摄像头的精简示例程序,并在代码中熟悉整个调用过程。
    #include<opencv2\opencv.hpp>
    using namespace cv;
    int main(){
    	//读入视频
    	VideoCapture capture(0);
    	//显示每一帧
    	while (1)
    	{
    		Mat frame;
    		capture >> frame;
    		imshow("名场面", frame);
    		waitKey(30);
    	}
    	return 0;
    }
    
    在这里插入图片描述
    另外,还可以使用摄像头程序配合canny边缘检测,得到canny边缘检测并高斯模糊后的摄像头采集视频,源码如下:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值