当前位置: 首页 > news >正文

OpenCV视频I/O(1)视频采集类VideoCapture介绍

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

用于从视频文件、图像序列或摄像头捕获视频的类。
该类提供了用于从摄像头捕获视频或读取视频文件和图像序列的 C++ API。
以下是该类的使用方法:

#include <opencv2/core.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{Mat frame;//--- INITIALIZE VIDEOCAPTUREVideoCapture cap;// open the default camera using default API// cap.open(0);// OR advance usage: select any API backendint deviceID = 0;             // 0 = open default cameraint apiID = cv::CAP_ANY;      // 0 = autodetect default API// open selected camera using selected APIcap.open(deviceID, apiID);// check if we succeededif (!cap.isOpened()) {cerr << "ERROR! Unable to open camera\n";return -1;}//--- GRAB AND WRITE LOOPcout << "Start grabbing" << endl<< "Press any key to terminate" << endl;for (;;){// wait for a new frame from camera and store it into 'frame'cap.read(frame);// check if we succeededif (frame.empty()) {cerr << "ERROR! blank frame grabbed\n";break;}// show live and wait for a key with timeout long enough to show imagesimshow("Live", frame);if (waitKey(5) >= 0)break;}// the camera will be deinitialized automatically in VideoCapture destructorreturn 0;
}

注意
在 C API 中,使用黑盒结构 CvCapture 代替 VideoCapture

  • (C++) 使用 VideoCapture 接口的基本示例可以在 OPENCV_SOURCE_CODE/samples/cpp/videocapture_starter.cpp 找到。
  • (Python) 使用 VideoCapture 接口的基本示例可以在 OPENCV_SOURCE_CODE/samples/python/video.py 找到。
  • (Python) 多线程视频处理的示例可以在 OPENCV_SOURCE_CODE/samples/python/video_threaded.py 找到。
  • (Python) 展示 Video4Linux2 后端部分特性的 VideoCapture 示例可以在 OPENCV_SOURCE_CODE/samples/python/video_v4l2.py 找到。

构造函数1

默认构造函数

cv::VideoCapture::VideoCapture	(		)	

构造函数2

使用 API 优先级打开视频文件、捕获设备或 IP 视频流以进行视频捕获。
这是一个重载成员函数,为方便而提供。它与上述函数的不同之处仅在于它接受的参数

cv::VideoCapture::VideoCapture	
(const String & 	filename,int 	apiPreference = CAP_ANY 
)	

参数2

  • 参数filename 它可以是:
    • 视频文件的名称(例如,video.avi)
    • 图像序列(例如,img_%02d.jpg,这将读取如 img_00.jpg、img_01.jpg、img_02.jpg 等样的样本)
    • 视频流的 URL(例如,protocol://host:port/script_name?script_params|auth)
    • 在使用 GStreamer 作为后端的情况下,GStreamer pipeline 字符串(gst-launch 工具格式)。请注意,每个视频流或 IP 摄像头馈送都有自己的 URL 方案。请参考源流的文档以了解正确的 URL。
  • 参数apiPreference 首选的捕获 API 后端。可以在多个可用的情况下强制使用特定的读取器实现:例如,cv::CAP_FFMPEG 或 cv::CAP_IMAGES 或 cv::CAP_DSHOW。

构造函数3

使用 API 优先级和参数打开视频文件、捕获设备或 IP 视频流以进行视频捕获。
这是一个重载成员函数,为方便而提供。它与上述函数的不同之处仅在于它接受的参数。params 参数允许指定以成对形式编码的额外参数.(paramId_1, paramValue_1, paramId_2, paramValue_2, …)。参见 [cv::VideoCaptureProperties](https://docs.opencv.org/4.9.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d)。

cv::VideoCapture::VideoCapture	
(const String & 	filename,int 	apiPreference,const std::vector< int > & 	params 
)	

构造函数4

打开摄像头以进行视频捕获。
这是一个重载成员函数,为方便而提供。它与上述函数的不同之处仅在于它接受的参数。


cv::VideoCapture::VideoCapture
(int 	index,int 	apiPreference = CAP_ANY 
)		

参数4

  • 参数index 要打开的视频捕获设备的 ID。为了使用默认后端打开默认摄像头,只需传递 0。(为了向后兼容,在 apiPreference 为 CAP_ANY 时,使用 camera_id + domain_offset (CAP_*) 是有效的)
  • 参数apiPreference 首选的捕获 API 后端。可以在多个可用的情况下强制使用特定的读取器实现:例如,cv::CAP_DSHOW 或 cv::CAP_MSMF 或 cv::CAP_V4L。

构造函数5

使用 API 优先级和参数打开摄像头以进行视频捕获。
这是一个重载成员函数,为方便而提供。它与上述函数的不同之处仅在于它接受的参数。params 参数允许指定以成对形式编码的额外参数(paramId_1, paramValue_1, paramId_2, paramValue_2, …)。参见 cv::VideoCaptureProperties


cv::VideoCapture::VideoCapture
(int 	index,int 	apiPreference,const std::vector< int > & 	params 
)	

相关文章:

OpenCV视频I/O(1)视频采集类VideoCapture介绍

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 用于从视频文件、图像序列或摄像头捕获视频的类。 该类提供了用于从摄像头捕获视频或读取视频文件和图像序列的 C API。 以下是该类的使用方法&a…...

CVE-2024-46103

前言 CVE-2024-46103 SEMCMS的sql漏洞。 漏洞简介 SEMCMS v4.8中&#xff0c;SEMCMS_Images.php的search参数&#xff0c;以及SEMCMS_Products.php的search参数&#xff0c;存在sql注入漏洞。 &#xff08;这个之前就有两个sql的cve&#xff0c;这次属于是捡漏了&#x1f6…...

三,MyBatis-Plus 的各种查询的“超详细说明”,比如(等值查询,范围查询,模糊查询...)

三&#xff0c;MyBatis-Plus 的各种查询的“超详细说明”&#xff0c;比如(等值查询&#xff0c;范围查询&#xff0c;模糊查询…) 文章目录 三&#xff0c;MyBatis-Plus 的各种查询的“超详细说明”&#xff0c;比如(等值查询&#xff0c;范围查询&#xff0c;模糊查询...)1. …...

Linux 冯诺依曼体系结构与操作系统概念

目录 0.前言 1. 冯诺依曼体系结构概述 1.1 输入单元 1.2 中央处理单元&#xff08;CPU&#xff09; 1.3 输出单元 2. 冯诺依曼体系结构的关键特性 2.1 所有数据流向内存 2.2 数据流动示例&#xff1a;QQ聊天过程 3. 操作系统 3.1 概念 3.2 设计操作系统的目的 3.3 操作系统的“…...

UE4中 -skipbuild -nocompile 有什么区别

在项目开发中&#xff0c;我看到了在调用 Engine\\Build\\BatchFiles\\RunUAT.bat 相关的命令行中&#xff0c;有 -skipbuild、 -nocompile 两个很像的参数&#xff0c;于是想探究一下它们的区别与含义。 -skipbuild 参数 到底有没有 -skipbuild 这个参数&#xff1f;根据 http…...

k8s篇之数据挂载类型及区别

一、K8S集群数据挂载类型及区别 在 Kubernetes 中,数据挂载类型主要有以下几种,每种类型适用于不同的场景。以下是主要的挂载类型及其应用场景的详细说明: 1. emptyDir 描述:emptyDir 是一个空目录,其生命周期与 Pod 相同。 它在 Pod 创建时被创建,并在 Pod 删除时被清…...

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 &#xff0c;左键单击可以拉取矩形框&#xff0c;放大选中的范围&#x…...

fetch怎么使用

fetch 是一个现代、强大的、基于 Promise 的网络请求 API&#xff0c;用于在浏览器中发起网络请求&#xff08;如异步获取资源&#xff09;。它提供了一种更加简洁和灵活的方式来替代 XMLHttpRequest。下面是 fetch 的基本使用方法和一些示例。 基本语法 fetch(url, options)…...

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于SO-SVR蛇群算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于SO-SVR蛇群算法优化支持向量机的数据多…...

光耦知识分享:如何挑选合适的可控硅光耦型号

可控硅光耦是一种光电耦合器件&#xff0c;它结合了光敏元件&#xff08;通常是光敏二极管&#xff09;和可控硅器件&#xff08;如普通可控硅或三端可控硅&#xff09;的特性。它的工作原理是利用光信号控制可控硅的导通和截止&#xff0c;从而实现对电路的控制。 可控硅光耦…...

MySql Explain优化命令使用

MySql Explain优化命令使用 truncate table student // 自增id 从 0 开始 delete from student // 自增id 会保留 &#xff0c; 108 区别&#xff1a; 1&#xff1a;自增id 2&#xff1a;delete 可以恢复 truncate 无法恢复 前言 EXPLAIN 是一个用于获取 SQL 语句执行计划的…...

Android NestedScrollView+TabLayout+ViewPager+ 其它布局,ViewPager 不显示以及超出屏幕不显示问题

前言 此场景为 NestedScrollView 嵌套多个布局 &#xff0c;大致结构为 NestedScrollViewTabLayoutViewPagerfragment 其它View,如下图 &#xff0c; 一、ViewPager 设置高度才会显示内容问题 原因&#xff1a;NestedScrollView 计算高度先于 ViewPager 渲染前&#xff0c;所…...

Linux开机logo设置

本文介绍Linux开机logo设置。 常用的Linux开机logo设置工具有fbi(Linux Framebuffer Imageviewer)&#xff0c;plymouth等&#xff0c;本文针对fbi工具进行开机logo设置。 1.fbi工具安装 命令行下&#xff0c;输入&#xff1a; sudo apt-get install fbi -y 安装完毕后&am…...

webpack插件开发 模拟vue系统登录后,获取a标签下的文件

浏览器插件开发中&#xff0c;在webpack插件开发中&#xff0c;模拟Vue系统登录后获取a标签下的文件&#xff0c;可以通过监听某个登录事件&#xff0c;并在事件处理函数中修改Webpack的输出配置来实现。以下是一个简化的示例代码&#xff1a; // 假设有一个插件构造函数 Logi…...

大规模数据处理:分库分表与数据迁移最佳实践

什么是分库分表 分库分表是一种数据库架构优化策略&#xff0c;它将数据分散存储在多个数据库或表中&#xff0c;以此来提高系统的可扩展性和性能。 虽然分库分表能够提升系统的整体性能&#xff0c;但是也不要一上来就分库分表&#xff0c;如果系统在单表的情况下&#xff0…...

TCP网络编程概述、相关函数、及实现超详解

文章目录 TCP网络编程概述1. TCP协议的特点2. TCP与UDP的差异3. TCP编程流程 TCP网络编程相关函数详解1. socket()&#xff1a;创建套接字参数说明&#xff1a;返回值&#xff1a;示例&#xff1a; 2. connect()&#xff1a;客户端连接服务器参数说明&#xff1a;返回值&#x…...

Cluade 3.5 Sonnet 提示词泄露

prompt 翻译&#xff1a; The notebook currently demonstrates support for a two agent setup. Support for GroupChat is currently in development....

git clone代码报错Permission denied (publickey)

git clone gerrit SSH的Clone with commit-msg hook代码连接&#xff0c;报错Permission denied (publickey). 一般在C:\Users\用户名.ssh文件夹下有一个id_rsa.pub文件 把文件里的内容复制 到gerrit网站上User Settings的SSH keys里 在New SSH key里粘贴刚刚复制的内容&…...

QT设计中文输入法软键盘DLL给到C#开发步骤

开发目的&#xff1a;本文提供解决触摸屏C#程序中无法输入中文问题&#xff0c;中文拼音采用开源的谷歌输入法程序、使用QT编译中文输入法界面和中文输入法接口给到C#使用。 开发步骤&#xff1a; 1、QT中设计字母和字符输入界面 2、QT中设计数字输入界面 3、QT中封装调用谷歌…...

使用 Rust 和 wasm-pack 开发 WebAssembly 应用

一、什么是 WebAssembly&#xff1f; WebAssembly 是一种运行在现代 Web 浏览器中的新型二进制指令格式。它是一种低级别的字节码&#xff0c;可以被多种语言编译&#xff0c;并在浏览器中高效运行。 1.1 WebAssembly 的背景与概念 高性能计算&#xff1a;WebAssembly 旨在提…...

【实战】多语言后端接入华为云IoT平台:从数据转发到命令下发全流程解析

1. 华为云IoT平台接入全景概览 华为云IoT平台作为国内领先的物联网解决方案&#xff0c;提供了从设备接入到应用开发的全套服务。在实际项目中&#xff0c;我们经常需要将Node.js/Python/Java等后端服务与IoT平台对接&#xff0c;实现设备数据的实时处理和远程控制。不同于简单…...

从‘飞到红色建筑左边’说起:拆解无人机视觉语言导航(VLN)背后的三大工程难题

从"飞到红色建筑左边"说起&#xff1a;拆解无人机视觉语言导航的工程化困局 当你在测试场地对无人机说出"飞到红色建筑左边"时&#xff0c;这个看似简单的指令背后&#xff0c;是一场跨越模态鸿沟的复杂解码过程。不同于实验室里的完美演示&#xff0c;真实…...

python汽车4s店的汽车租赁服务管理系统vue

目录功能模块分析租赁服务核心功能技术实现要点扩展功能建议项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作功能模块分析 用户管理模块 用户注册与登录&#xff1a;支持手机号、邮箱注册&#xff0c;集成短信验证码功能。权限…...

Materialize:智能PBR材质转化引擎赋能3D创作流程重构

Materialize&#xff1a;智能PBR材质转化引擎赋能3D创作流程重构 【免费下载链接】Materialize Materialize is a program for converting images to materials for use in video games and whatnot 项目地址: https://gitcode.com/gh_mirrors/mate/Materialize 在3D内容…...

Element Plus表格滚动卡顿?试试这个Vue3封装方案,性能提升明显

Vue3Element Plus表格性能优化实战&#xff1a;平滑滚动与内存管理 Element Plus的el-table组件在企业级后台系统中广泛应用&#xff0c;但当数据量达到500行以上时&#xff0c;滚动卡顿、内存飙升的问题开始显现。本文将分享一套经过生产环境验证的优化方案&#xff0c;通过数…...

FICO批量修改资产字段AR31:替代规则失效的排查与修复

1. 替代规则失效的典型场景 最近在SAP FICO模块实施过程中&#xff0c;遇到一个挺有意思的问题。财务部门需要对大批量资产进行成本中心调整&#xff0c;要求按照不同使用日期切换不同的成本中心。听起来是个很常规的需求对吧&#xff1f;我们按照标准流程在GGB1配置了替代规则…...

Mac Mouse Fix 3.x升级指南:从基础增强到专业级鼠标体验的进化之路

Mac Mouse Fix 3.x升级指南&#xff1a;从基础增强到专业级鼠标体验的进化之路 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 价值导向&#xff1a;为什么…...

StarVCenter单机版安装避坑指南:从BIOS设置到虚拟机创建的完整流程

StarVCenter单机版安装全流程实战&#xff1a;从硬件准备到虚拟机管理的深度解析 在当今企业IT基础设施快速迭代的背景下&#xff0c;虚拟化技术已成为资源整合与管理的核心解决方案。StarVCenter作为一款国产化虚拟化管理平台&#xff0c;其单机版部署方案特别适合中小型业务场…...

UMAP降维技术:拓扑数据分析驱动的高效可视化方案

UMAP降维技术&#xff1a;拓扑数据分析驱动的高效可视化方案 【免费下载链接】umap Uniform Manifold Approximation and Projection 项目地址: https://gitcode.com/gh_mirrors/um/umap 在高维数据可视化领域&#xff0c;研究者长期面临"鱼和熊掌不可兼得"的…...

OpenClaw安全指南:Qwen3-32B-Chat本地化执行边界控制

OpenClaw安全指南&#xff1a;Qwen3-32B-Chat本地化执行边界控制 1. 为什么需要关注OpenClaw的安全边界&#xff1f; 去年冬天的一个深夜&#xff0c;我被一阵急促的键盘敲击声惊醒。走进书房&#xff0c;发现OpenClaw正在自动执行我前一天设置的爬虫任务——这本是正常现象&…...