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

2023-11-11

关于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 //视频成功初始化,返回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();//关闭视频文件或者摄像头

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

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函数关闭摄像头

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV+VS2019打开和关闭电脑摄像头 的相关文章

  • Python中使用cv2获取当前视频播放位置

    我正在尝试使用 CV2 和 Python 从播放视频中获取当前播放时间位置 如果可能 以毫秒为单位 目前我正在使用此示例代码来播放视频文件 import cv2 import numpy as np file name 2 mp4 wind
  • Opencv - Features2D + 单应性不正确的结果

    我在将检测到的物体的轮廓放置在正确的位置时遇到了一些问题 就好像坐标位于错误的位置一样 我将粗麻布设置为 2000 并过滤了小于最小距离 3 倍的匹配 任何帮助 将不胜感激 运行匹配和单应性的结果 代码示例如下 public static
  • 如何在 CMake Makefile 中包含 OpenCV 库

    我希望你可以帮助我 我有一个简单的 CMakeLists txt 以便在 Leopard 10 5 8 上构建我的项目 我正在使用 CMake 2 8 1 目前这是代码 cmake minimum required VERSION 2 8
  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • 构建 OpenCV 时出错 :: MonitorFromRect 未在此范围内声明

    我试图建立OpenCV version 2 4 8与它一起使用CodeBlocks and MinGw 我按照以下指示进行操作here http kevinhughes ca tutorials opencv install on wind
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • 从索贝尔确定图像梯度方向?

    我正在尝试使用 openCV 的 Sobel 方法的结果来确定图像梯度方向 我知道这应该是一个非常简单的任务 我从此处复制了许多资源和答案中的方法 但无论我做什么 所得方向始终在 0 57 度之间 我希望范围为 0 360 我相信所有的深度
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • 如何计算立体视觉的基本矩阵

    我正在尝试编写一些代码来计算基本矩阵以确定立体图像之间的关系 我从大多数人推荐的 Hartley 和 Zisserman 书开始 但它没有任何实际示例 并且示例代码是在 MATLAB 中 而我没有 然后我切换到这个比较实用 里面有实际例子
  • `opencv.android.JavaCameraView` 和 `opencv.android.NativeCameraView` 有什么区别

    正如主题中所述 有什么区别opencv android JavaCameraView and opencv android NativeCameraView 与其他主要优点相比 有哪些优点可以提供更多选择 来自OpenCV 文档 http
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • 从 2 个摄像头捕获(OpenCV、Python)[重复]

    这个问题在这里已经有答案了 所以我试图从 openCV 中的两个摄像头 python 和 windows 7 进行捕获 我用一台相机拍摄的效果很好 你也会注意到我正在对图像做一些时髦的事情 但这并不重要 这是尝试使用两个的代码 import
  • 将线性数组转换为二维矩阵

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • 在 Android 中使用 OpenCV 查找图像匹配

    我正在尝试构建一个 Android 应用程序 该应用程序可以比较设备相机拍摄的照片 以在一组图像中找到匹配项 我已经在 Android Studio 上配置了 OpenCV 但仅此而已 有人可以通过链接到资源或建议教程来提供帮助吗 Open
  • 对同色像素块的边界进行着色

    我有一张有 5 种不同颜色的图像 在这种情况下 随机生成 w h 40 27 img Image new RGB w h pixels img load available colors r 255 13 18 b 72 64 255 y
  • OpenCV:如何使用图像计算相机和物体之间的距离?

    我是 OpenCV 的新手 我正在使用以下公式来计算距离 distance to object mm focal length mm real height of the object mm image height pixels obje
  • 使用 SURF 在检测到的对象周围绘制矩形

    我正在尝试从涉及冲浪检测器的以下代码中检测对象 我不想绘制匹配项 我想在检测到的对象周围绘制一个矩形 但不知何故我无法获得正确的单应性 请任何人指出在哪里我走错了 include
  • 如何确定透视变换后的点在新图像平面中的位置?

    我使用 OpenCV Python Numpy 图像中有三个点 我知道这些点的确切位置 P1 P2 N1 我要将图像转换为另一个视图 例如 我将透视图转换为侧视图 如果这样做 我将无法获得图像平面中这三个点的确切位置 我应该以一种可以获得这
  • 在 Python 中使用音频流 RTMP 通过管道和 OpenCV 到 FFmpeg

    我正在尝试使用音频流式传输 FFmpeg 我将在下面展示我的代码 导入模块 import subprocess as sp 创建变量 rtmpUrl rtmp a rtmp youtube com live2 key camera path
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方

随机推荐

  • mysql、redis、nginx等linux搭建

    mysql5 7版本搭建 1 从MySQL Download MySQL Community Server Archived Versions 选择5 7版本64位下载 一般选择5 7版本 2 将mysql压缩包放在服务器 usr loca
  • sqli-labs/Less-26a

    这一关还是提示我们空格和注释符被过滤掉了 可能还是和上一关一样 逻辑运算符也被过滤了 那么和上一关的不同之处可能就在于注入类型的不同 我们首先判断一下注入类型 先判断是否为数字型 输入如下 id 1 0b 26 26 0b1 2 回显如下
  • jquery checkbox选中事件监听

    div span 全选 全不选 span div
  • 深度解析MySQL 5.7之中文全文检索

    InnoDB默认的全文索引parser非常合适于Latin 因为Latin是通过空格来分词的 但对于像中文 日文和韩文来说 没有这样的分隔符 一个词可以由多个字来组成 所以我们需要用不同的方式来处理 在MySQL 5 7 6中我们能使用一个
  • Android InputEventReceiver事件接收流程分析

    本文基于Android 12 InputEvent经过inputflinger读取后 通过Inputchannel发送到Java层的InputEventReceiver对象 输入事件和View的状态强相关 事件发送需要确定当前的焦点App
  • (1)2D绘图详解(QPainter)

    一 Qt绘制事件 当应用程序收到绘制事件时 就会调用QWidget paintEvent 该函数就是绘制窗口的地方 有两种方法要求重绘一个窗口 1 update 把重绘事件添加到事件队列中 重复调用update 会被Qt合并为一次 不会产生
  • 【满分】【华为OD机试真题2023 JAVA&JS】区间连接器

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 区间连接器 知识点数组排序滑窗 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 有一组区间 a0 b0 a1 b1 a b 表示起点 终点 区间有可能重叠 相邻
  • 区块链+光伏产业,阻力更大还是前景更大?

    区块链通过比特币这样的形式 让世人看到了它神奇的一面 想象空间非常大 驱动了诸多领域对它的研究 这使得业内人士对于区块链 光伏产业相结合提出了疑问是阻力大还是前景更大呢 在国内现有的电力交易市场中 电力交易主要掌握在国有电网公司手里 然而
  • 【环形链表】

    目录 前言 一 相交链表 一 题目分析 二 题目代码 二 环形链表 一 题目分析 二 题目代码 三 环形链表 一 解法1 数学分析 公式推导 题目分析 题目代码 二 解法2 切断环 改变问题为相交链表 题目分析 题目代码 三 解法3 改变链
  • New Bing相关设置与解除聊天次数限制

    最近ChatGPT相关的话题很多 之前使用了一下 感觉虽然功能很强大 但是ChatGPT只能查找2021年之前的信息 并且会编造一些虚假信息 例如让其给出一些信息的来源的时候 就会胡乱编造 1 New Bing的优势 New Bing是Ch
  • 有向图深度优先

    1 深度优先遍历 deep first traverse 定义 假设给定图G的初态是所有顶点均未曾访问过 在G中任选一顶点v为初始出发点 源点 则深度优先遍历可定义如下 首先访问出发点v 并将其标记为已访问过 然后依次从v出发搜索v的每个邻
  • 磁共振中的T1, T2 和 T2*的原理和区别

    从物理的角度 要理解这几个概念的区别 需要对原子核的磁化有所了解 本文通过一些图示对这几个概念进行简明的介绍 首先 磁共振最基本的原理就是氢原子核在磁场中自旋运动时所具有的量子力学特性 在一个均匀磁场B0中 氢原子核的旋转 spin 会出现
  • 初使用uni-app,适配多端,踩坑及经验合集

    初使用uni app 适配多端 踩坑及经验合集 一 微信小程序不支持axios 1 安装 使用小程序适配器 axios miniprogram adapter 使用npm安装 npm install axios miniprogram ad
  • Clion创建新C++项目时无法直接build的解决方案

    问题描述 当我们在clion中新创建一个C 项目的时候 通常没法直接build这个新的项目 结果如下图所示 step1 先点击reload cmake project step2 在右上角edit configuration并新增cmake
  • mysql中反引号 ` 和单引号 ' 的作用

    字符串用单引号 可提高性能 表名 字段 数据库名等标识符可用反引号 标识符也可以不使用反引号 但如果标识符包含特殊字符或保留字 则必须使用 标识符包括 数据库 表 索引 列 别名 视图 存储过程 分区 表空间 其他对象名称
  • 服务器系统镜像虚拟光驱,虚拟硬盘镜像DAEMON Tools Ultra

    DAEMON Tools Ultra虚拟硬盘镜像非常方便 支持创建和加载只读 可写虚拟硬盘镜像 镜像文件可以是动态大小 也可以是固定大小 用VHD镜像备份您的任何数据 对您存储在VHD文件中的任何数据进行快捷方便地读写 新一代 DAEMON
  • 高等代数-知识点

    高等代数 知识点 行列式 矩阵 向量 线性方程组 二次型 行列式 1 行列式本质 就是一个数 2 行列式概念 逆序数 考研 小题 无法联系其他知识点 当场解决 3 二阶 三阶行列式具体性计算 考研 不会单独出题 常常结合伴随矩阵 可逆矩阵考
  • 最简明扼要的 Systemd 教程,只需十分钟

    systemctl常用命令介绍 Systemctl是一个systemd工具 主要负责控制systemd系统和服务管理器 Systemd是一个系统管理守护进程 工具和库的集合 用于取代System V初始进程 Systemd的功能是用于集中管
  • 千里行始足下,小白们一起加油,终有一日进化为佬

    大家谁来一起学习哇 作为一个刚入坑的小白 作为我发表的第一篇博客 这篇文章我构思了许久 明年即将步入大二的殿堂 有点愧疚的却是我并没有学到一点东西 在接触到了变成这个有趣的玩意儿以后 我就对此产生了莫大的兴趣 当然 但愿不是半途而废草草收场
  • OpenCV+VS2019打开和关闭电脑摄像头

    关于OpenCV和VS2019的配置 请参考博客以前的连接 OpenCV中主要使用videocapture来打开和关闭摄像头 https docs opencv org master d8 dfe classcv 1 1VideoCaptu