【opencv拓展】摄像头基本操作

版权声明: https://blog.csdn.net/shuiyixin/article/details/82949396

目录

一、介绍

二、VideoCapture类

1、构造函数

2、摄像头的打开与关闭

3、视频帧的读取


一、介绍

OpenCV作为计算机视觉库,最主要的就是如何去看这个世界,摄像头就是他的眼睛,所以本文章介绍OpenCV如何调用摄像头,以及相关的代码分享。

新版的OpenCV是用C++写的,所以相关功能都是通过类来实现,通过VideoCaptrue类对视频进行读取操作以及调用摄像头。当然,OpenCV会有Python,matlab等其他语言接口,在本文关于C++的接口。想了解更多OpenCV也可以查看OpenCV官网:https://opencv.org/。下面是官网截图

 

二、VideoCapture类

官网VideoCapture类

接下来给大家具体讲解几个较为常用的函数。

1、构造函数

//功能:创建一个VideoCapture类的实例,如果传入对应的参数,可以直接打开视频文件或者要调用的摄像头。
VideoCapture::VideoCapture();
VideoCapture::VideoCapture(const string& filename);//filename – 打开的视频文件名。
VideoCapture::VideoCapture(int device); //device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像。

2、摄像头的打开与关闭

virtual bool 	isOpened () const //视频成功初始化,返回true
 	
virtual bool 	open (const String &filename)//通过video capturing打开视频文件或摄像头
 
virtual bool 	open (int index) //通过摄像头打开视频,默认为0,如果是带前置摄像头的电脑,一般为前置摄像头。

上面是几个比较常用的打开函数,下面是上面代码的应用:

VideoCapture capture;//初始化一个VideoCapture实例,名字叫做capture

capture.open("111.avi");//利用初始化的capture,打开视频"dog.avi"

capture.open(0);//利用初始化的capture,打开ID为0的摄像头,一般有前置摄像头的笔记本电脑,默认打开该摄像头。

capture.release();//关闭视频文件或者摄像头

要注意的是,capture.open(0)打开的是电脑系统默认摄像头,有前置摄像头的笔记本电脑,一般默认打开该摄像头,没有摄像头的,一般默认第一个连接电脑的摄像头,如果打不开摄像头,可以通过系统设置查看默认摄像头,并修改

3、视频帧的读取

VideoCapture& VideoCapture::operator>>(Mat& image);
bool VideoCapture::read(Mat& image);//该函数结合VideoCapture::grab()和VideoCapture::retrieve()其中之一被调用,用于捕获、解码和返回下一个视频帧。假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。

 

下面是几种获取视频帧的方法:

// 方法一
capture.read(frame);
 
// 方法二
capture.grab();
 
// 方法三
capture.retrieve(frame);
 
// 方法四
capture >> frame;

代码应用


Mat frame;   //定义Mat变量

capture.read(frame);

capture >> frame;

猜你喜欢

转载自blog.csdn.net/shuiyixin/article/details/82949396