关于OpenCV和VS2019的配置,请参考博客以前的连接。

OpenCV中主要使用videocapture来打开和关闭摄像头

https://docs.opencv.org/master/d8/dfe/classcv_1_1VideoCapture.html#afb4ab689e553ba2c8f0fec41b9344ae6

上述连接时OpenCV官网对于这个类的功能描述

定义

class    cv::VideoCapture

构造函数,有三种


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

摄像头打开与关闭

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

但实际使用时,如下:

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

不过我建议使用最多的方式如下:

VideoCapture capture(0);//初始化一个VideoCapture实例,名字叫做capture,并打开设备0的摄像头

读取视频帧

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

我建议使用如下方式:

Mat frame;//定义同一个mat变量,用来接收一帧图像
capture >> frame;//利用>>运算符,将capture的结果输出到frame里面去,就可以获得帧图像

read和上述这种方式选一种即可,不要两个都用

测试代码:

#include<opencv2/opencv.hpp>
#include<iostream>using namespace std;
using namespace cv;
int main()
{VideoCapture capture(0);int i=0;//cin >> stop;while(true) {i++;Mat frame;capture >> frame;imshow("读取视频",frame);cout << i << endl;if (i == 1000) {capture.release();break;}waitKey(30);}return 0;
}

代码中的i是为了能够测试release函数关闭摄像头

OpenCV+VS2019打开和关闭电脑摄像头相关推荐

  1. 使用opencv直接打开云钥GigE网络工业相机

    使用opencv直接打开云钥GigE网络工业相机 一直以来,使用opencv打开网络工业相机获取图像是一个麻烦的事情,一般的做法是对接工业相机厂商提供的SDK库,使用其中API函数.但是SDK库中基本 ...

  2. C语言<文件的打开与关闭>

    目录 一.为什么使用文件 二.什么是文件 1.程序文件 2.数据文件 3.文件名 三.文件的打开与关闭 1.文件指针 2.文件的打开与关闭 结语 一.为什么使用文件 我们前面学习结构体时,写了通讯录的 ...

  3. C++ 笔记(21)— 处理文件(文件打开、关闭、读取、写入)

    C++ 提供了 std::fstream ,旨在以独立于平台的方式访问文件. std::fstream 从 std::ofstream 那里继承了写入文件的功能,并从 std::ifstream 那里 ...

  4. ubuntu 如何关闭离线模式_如何在macOS中打开或关闭Mac暗黑模式

    苹果在macOS Mojave中为Mac引入了暗模式.暗模式是系统级别的设置,可与Mac随附的所有应用一起使用.第三方应用也可以选择使用暗黑模式.暗黑模式使您更轻松地专注于工作,并且对眼睛也很容易.装 ...

  5. Matlab学习笔记——文件的打开与关闭

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 文件的打开与关闭 1.fopen函数 2.fclose函数 文件的打开与关闭 1.fopen函数 用于打开文件,其 ...

  6. 生活娱乐 达尔优的键盘鼠标如何打开和关闭呼吸灯

    http://item.jd.com/1105057.html FN+Scrllock为开关按钮 FN+PuUp为调节灯光 http://item.jd.com/1154075.html 鼠标底面有开 ...

  7. Linux C编程--打开和关闭流

    以下函数用于打开和关闭一个流. #include <stdio.h> FILE * fopen (const char *pathname, const char *opentype); ...

  8. android 弹出编辑框,Android编程实现的EditText弹出打开和关闭工具类

    本文实例讲述了Android编程实现的EditText弹出打开和关闭工具类.分享给大家供大家参考,具体如下: 需求: 使用代码实现Android的输入框EditText对键盘的关闭弹出的实现. 代码: ...

  9. Ubuntu16.04打开和关闭桌面显示

    阿里云Ubuntu16.04打开和关闭桌面显示 文章目录 一.打开桌面图像化显示 一.关闭桌面图像化显示 在进行阿里云远程连接桌面(浏览中显示的桌面)时,通过点击左上角的的alt+ctrl+f1,然后 ...

最新文章

  1. mfc倾斜文本输入_文本检测知识梳理(持续更新)
  2. linux虚拟网络设备之bridge(桥)(三)
  3. android ndk 界面开发教程,Android NDK开发之入门教程
  4. tomcat 7连接池配置与使用
  5. Vue.js-Day01-PM【事件绑定(事件传参、事件对象、传参+获取事件对象)、样式处理操作(模板、事件、属性绑定)、Tab切换(原生js实现、Vue.js实现)、js中的this详解关键字】
  6. Spring mvc 内置编码过滤器原理解析
  7. Django(part14)--模板的继承
  8. 【Todo】Java8新特性学习
  9. HDU 4651 数论 partition 求自然数的拆分数
  10. 小说有广告?我用50行Python爬虫做了一个无广在线小说阅读器
  11. 【洛谷试炼场】普及练习场——贪心
  12. 测试用例--测试大纲(提纲)法
  13. UMLChina公众号文章精选(20220227更新精选)
  14. docker 部分插件安装命令
  15. Monyer黑客小游戏 踩坑总结
  16. Develop -- Training(十五) -- 显示高效位图
  17. Jackson Json 快速入门
  18. html数据线如何使用,揭秘数据线DIY详细步骤
  19. NBS-Predict:基于脑网络的机器学习预测
  20. 【深度】被加班,狼性文化面纱下的奴性文化

热门文章

  1. 付利赚浅谈副业已成刚需
  2. 群控源码云控安卓PC服务器三端最新源码
  3. 三分钟彻底禁用、隐藏Android设备底部虚拟按钮(亲测有效)
  4. iPhone键盘自定义及通知
  5. html中怎么判断数字格式是否,javascript中怎么判断是否是数字?
  6. Anaconda环境下离线安装dlib库,在线安装很多问题报错,离线安装速度快稳定
  7. java---三层架构
  8. 计算机系统支持,计算机系统支持培训.ppt
  9. 高速公路计算机知识,高速公路基本知识120问
  10. 利用USB摄像头,免费快速搭建浏览器远程监控