首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-02-16 16:40
  • 4208
  • 10640
blog.csdn.net

目录

一、介绍

二、VideoCapture类

1、构造函数

2、摄像头的打开与关闭

3、视频帧的读取


一、介绍

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

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

 

二、VideoCapture类

官网VideoCapture类

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

1、构造函数

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

2、摄像头的打开与关闭

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

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

  1. VideoCapture capture;//初始化一个VideoCapture实例,名字叫做capture
  2. capture.open("111.avi");//利用初始化的capture,打开视频"dog.avi"
  3. capture.open(0);//利用初始化的capture,打开ID为0的摄像头,一般有前置摄像头的笔记本电脑,默认打开该摄像头。
  4. capture.release();//关闭视频文件或者摄像头

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

3、视频帧的读取

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

 

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

  1. // 方法一
  2. capture.read(frame);
  3. // 方法二
  4. capture.grab();
  5. // 方法三
  6. capture.retrieve(frame);
  7. // 方法四
  8. capture >> frame;

代码应用

  1. Mat frame; //定义Mat变量
  2. capture.read(frame);
  3. capture >> frame;

 

注:本文转载自blog.csdn.net的水亦心的文章"https://blog.csdn.net/shuiyixin/article/details/82949396"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top