Videocapture类使用介绍

opencv进阶09-视频处理cv2.VideoCapture示例(打开本机电脑摄像头) cv2.VideoCapture 类的常用函数包括初始化、打开、帧捕获、释放、属性设置等,下面对这些函数进行简单的介绍。1. 初始化OpenCV 为 cv2.VideoCapture 类提供了构造函数,用于打开摄像头并完成摄像头的初始化工作。该函数的语法格式为:捕获对象=cv2.VideoCapture(“摄像头 ID 号”)式中:“摄像头 ID 号”就是摄像头的 ID 号码。需要注意的是,这个参数是摄像设备(摄像头)的 ID 编号,而不是文件名。其默认值为-1,表示随机选取一个摄像头; 阅读详情
AI摘要

本文详细介绍OpenCV中VideoCapture类的使用方法,包括如何通过构造函数和open方法打开视频文件或摄像头,如何使用isOpened判断是否成功打开,如何通过read、grab、retrieve等方法读取视频帧,以及如何设置和获取视频属性。

opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API。

1.VideoCapture类的构造函数:

C++: VideoCapture::VideoCapture()
C++: VideoCapture::VideoCapture(const string& filename)

C++: VideoCapture::VideoCapture(int device)

功能:创建一个VideoCapture类的实例,如果传入对应的参数,可以直接打开视频文件或者要调用的摄像头。

参数:
filename – 打开的视频文件名。

device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。 


2.VideoCapture::open

功能:打开一个视频文件或者打开一个捕获视频的设备(也就是摄像头)

C++: bool VideoCapture::open(const string& filename)
C++: bool VideoCapture::open(int device)
参数:
filename – 打开的视频文件名。

device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。

    通过对VideoCapture类的构造函数和open函数分析,可以发现opencv读入视频的方法一般有如下两种。比如读取当前目录下名为"dog.avi"的视频文件,那么这两种写法分别如下。

(1)先实例化再初始化:

VideoCapture capture;

capture.open("dog.avi");

(2)在实例化的同时进行初始化:

VideoCapture("dog.avi");


3.VideoCapture::isOpened
C++: bool VideoCapture::isOpened()
功能:判断视频读取或者摄像头调用是否成功,成功则返回true。


4.VideoCapture::release

C++: void VideoCapture::release()
功能:关闭视频文件或者摄像头。

5.VideoCapture::grab
C++: bool VideoCapture::grab()
功能:从视频文件或捕获设备中抓取下一个帧,假如调用成功返回true。(细节请参考opencv文档说明)


6.VideoCapture::retrieve
C++: bool VideoCapture::retrieve(Mat& image, int channel=0)
功能:解码并且返回刚刚抓取的视频帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。

7.VideoCapture::read

C++: VideoCapture& VideoCapture::operator>>(Mat& image)
C++: bool VideoCapture::read(Mat& image)

功能:该函数结合VideoCapture::grab()和VideoCapture::retrieve()其中之一被调用,用于捕获、解码和返回下一个视频帧这是一个最方便的函数对于读取视频文件或者捕获数据从解码和返回刚刚捕获的帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。


    从上面的API中我们会发现获取视频帧可以有多种方法 :

// 方法一 
capture.read(frame); 

// 方法二 
capture.grab(); 

// 方法三
capture.retrieve(frame); 

// 方法四

capture >> frame;


8.VideoCapture::get

C++: double VideoCapture::get(int propId)

功能:一个视频有很多属性,比如:帧率、总帧数、尺寸、格式等,VideoCapture的get方法可以获取这些属性。

参数:属性的ID。

属性的ID可以是下面的之一:

CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds or video capture timestamp.
CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
CV_CAP_PROP_FPS Frame rate.
CV_CAP_PROP_FOURCC 4-character code of codec.
CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
CV_CAP_PROP_HUE Hue of the image (only for cameras).
CV_CAP_PROP_GAIN Gain of the image (only for cameras).
CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
CV_CAP_PROP_WHITE_BALANCE Currently not supported
CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
Note: 如果查询的视频属性是VideoCapture类不支持的,将会返回0。


9.VideoCapture::set
C++: bool VideoCapture::set(int propertyId, double value)

功能:设置VideoCapture类的属性,设置成功返回ture,失败返回false。

参数:第一个是属性ID,第二个是该属性要设置的值。
属性ID如下:
CV_CAP_PROP_POS_MSEC Current position of the video file in milliseconds.
CV_CAP_PROP_POS_FRAMES 0-based index of the frame to be decoded/captured next.
CV_CAP_PROP_POS_AVI_RATIO Relative position of the video file: 0 - start of the film, 1 - end of the film.
CV_CAP_PROP_FRAME_WIDTH Width of the frames in the video stream.
CV_CAP_PROP_FRAME_HEIGHT Height of the frames in the video stream.
CV_CAP_PROP_FPS Frame rate.
CV_CAP_PROP_FOURCC 4-character code of codec.
CV_CAP_PROP_FRAME_COUNT Number of frames in the video file.
CV_CAP_PROP_FORMAT Format of the Mat objects returned by retrieve() .
CV_CAP_PROP_MODE Backend-specific value indicating the current capture mode.
CV_CAP_PROP_BRIGHTNESS Brightness of the image (only for cameras).
CV_CAP_PROP_CONTRAST Contrast of the image (only for cameras).
CV_CAP_PROP_SATURATION Saturation of the image (only for cameras).
CV_CAP_PROP_HUE Hue of the image (only for cameras).
CV_CAP_PROP_GAIN Gain of the image (only for cameras).
CV_CAP_PROP_EXPOSURE Exposure (only for cameras).
CV_CAP_PROP_CONVERT_RGB Boolean flags indicating whether images should be converted to RGB.
CV_CAP_PROP_WHITE_BALANCE Currently unsupported
CV_CAP_PROP_RECTIFICATION Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently)
    

    至此,视频捕获类VideoCapture的API介绍完了,下面是一个应用示例:

#include <iostream>


#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

int main(int argc,char* argv[])

{
    cv::VideoCapture capture(argv[1]);
    if(!capture.isOpened())

    {
        std::cout<<"video not open."<<std::endl;
        return 1;
    }
    //获取当前视频帧率
    double rate = capture.get(CV_CAP_PROP_FPS);
    //当前视频帧
    cv::Mat frame;
    //每一帧之间的延时
    //与视频的帧率相对应
    int delay = 1000/rate;
    bool stop(false);
    while(!stop)

    {
        if(!capture.read(frame))

        {
            std::cout<<"no video frame"<<std::endl;
            break;
         }

        //此处为添加对视频的每一帧的操作方法
        int frame_num = capture.get(CV_CAP_PROP_POS_FRAMES);
        std::cout<<"Frame Num : "<<frame_num<<std::endl;
        if(frame_num==20)

        {
            capture.set(CV_CAP_PROP_POS_FRAMES,10);
        }

        cv::imshow("video",frame);
        //引入延时
        //也可通过按键停止
        if(cv::waitKey(delay)>0)
        stop = true;
    }


    //关闭视频,手动调用析构函数(非必须)
    capture.release();
    return 0;
}

OpenCV的VideoCapture类的get、set参数列表 首先先看OpenCV4.1官方中文手册P32,关于VideoCapture的set和get的说明,如图1所示。说明了19个参数都是可读的,但部分参数可写。具体关于它们的读写我没有仔细深究,在表1注出了我所知的它们读写属性。 图1 表1 get的参数列表 参数名称 值 说明 读/写 CV.CAP_PROP_POS_MSEC 0 当前视频文件的时间位置(返回毫秒)或视频捕获时间戳 Y/ CV.CAP_PROP_POS_FRAMES 1 从0开. 阅读详情

相关推荐

VideoCapture类

VideoCapture类是OpenCV中从视频文件或摄像头中提取图像帧,获得视频相关属性的一个类;下面详细介绍下这个类及其使用方法。 VideoCapture类的构造函数: // 这个是默认构造函数 VideoCapture::VideoCapture() // 这个构造函数用来处理视频文件,参数为视频文件名 VideoCapture::VideoCapture(const string&

youmy1111的专栏 1755

opencv视频操作基础---VideoCapture类

    opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头,下面是该类的API。1.VideoCapture类的构造函数:C++: VideoCapture::VideoCapture(); C++: VideoCapture::VideoCapture(const string&amp; filename); C++: VideoCapture::VideoCaptur...

洪流之源 11万+

OpenCV库成员——VideoCapture类和VideoWriter类

前面已经提到过一部分的视频读写:OpenCV–012:视频读写 OpenCV视频I/O概述 OpenCV视频I/O模块是一组用于读取和写入视频或图像序列的类和功能。 基本上,该模块将cv :: VideoCapture和cv :: VideoWriter类作为2层接口提供给许多用作后端的视频I / O API。 某些后端,例如(DSHOW)Direct Show,Windows视频(VFW)...

WaitFoF 4409

opencv学习---VideoCapture 类基础知识

以下是对两位大神的博客进行简单整理得到:http://blog.youkuaiyun.com/weicao1990/article/details/53379881 http://blog.youkuaiyun.com/guduruyu/article/details/68486063 便于为需要的同学解惑,便于自己以后复习!            在opencv中关于视频的读操作是通过

hairuiJY 10万+

【OpenCV】VideoCapture类解析

Backto OpenCV Index VideoCaputre 是OpenCV 中用来从摄像头或视频文件或图像序列 来 获取/处理视频的类. Class for video capturing from video files, image sequences or cameras. The class provides C++ API for capturing video from c...

北境の守望者 2568

videocap摄像头录像软件

这是一款非常实用而且体积小的录制软件,可以通过PC的摄像头 移动摄像设备 USB摄像头等进行抓拍,还有报警功能!

Videocapture类原理及示例

程序功能: 1.用户可以选择连续播放视频,输出一帧后用户再来决定下一帧如何播放(单帧模式),退出 2.同时支持用户设定下拉框显示确切位置的图像帧 存在问题: 控制台无法获取输入 下滑条回调函数理解不全面 读取视频流的videoCapture类功能没有完全理解,等我学过之后来补充。。。 #include &lt;opencv2/opencv.hpp&gt; #include&lt;iostream...

m0_37937932的博客 3012

【Labview】对连续采集数据的一种采样方法

图1如图1,想要对这样一个连续信号进行数据点的采集,我根据网上收集到的方法,在此分享一下最终的结果。可以拓展结合文件的写入,完成对连续信号的采集和输出。 已知: 一个连续信号,如图1. 目标: 设定一定采集点个数、采集点时间间隔、和采集周期次数,得到这条连续信号的数据点,如图2. 图2 方法如下: 主要利用的是队列的方法。 在连续信号生成的时候,不断的写入队列,并且清除队列。 ...

李时珍食疗志的博客 1万+

opencv学习之VideoCapture类

/apturing video from cameras or for reading video files and image sequences. Here is how the class can be used: : VideoCapture类主要用于从相机中、视频文件中、相片序列中读取单帧图像。具体用法如下 @code #include "opencv2/opencv.hpp"

Chailiren的博客 1213

篮球比赛24秒计时器改造指南:用Multisim实现可调式倒计时系统

本文详细介绍了如何使用Multisim软件改造篮球比赛24秒计时器,实现可调式倒计时系统。从脉冲信号发生器到声光报警模块,提供了完整的电路设计方案和调试技巧,帮助开发者快速掌握数字电路设计的核心原理,提升体育电子设备开发效率。

wood5的博客 211

Android 13 Hotseat定制化修改——001 hotseat布局方向

一.背景由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图标禁止移动到Launcher...

Java_fenxiang的博客 1102

opencv对视频进行人脸识别--使用videoCapture类

文章目录前言一、libfacedetection的配置及基本介绍:二、VideoCapture类:1、构造函数类型:2.1.1、VideoCapture();2.1.2、VideoCapture(const String& filename, int apiPreference = CAP_ANY);2.1.3、VideoCapture(int index, int apiPreference = CAP_ANY);2、构造函数具体定义:三、VideoCapture类的函数:1、open();函数3

ivan_9的博客 5698

【ROS】ROS局域网下多机通讯方法

最近工作中需要用到多机通讯,这里稍微总结一下使用方法。一、网络配置ifconfig这里举个例子,主机的IP地址为192.168.1.127,从机的IP地址为192.168.1.126;之后可测试一下能否互相ping通,成功后进行下一步。

weixin_43326110的博客 3360

OpenCV中VideoCapture类的使用详解

OpenCV中从视频文件或摄像机中捕获视频的类是VideoCapture。该类提供 C++ API 用于从摄像机捕获视频或读取视频文件。 关于视频的读操作是通过VideoCapture类来完成的;视频的写操作是通过VideoWriter类来实现的。 VideoCapture既支持从视频文件读取,也支持直接从摄像机(比如计算机自带摄像头)中读取。要想获取视频需要先创建一个VideoCapture对象,VideoCapture对象的创建方式有以下三种: 一、创建一个捕获对象,通过成员函数open()来设定打开的

极客园地 1万+

华为OD面试八股文嵌入式C语言基础问题及答案(一)

本文总结了C语言编程中的10个关键知识点:1.宏定义MIN的实现方法;2.嵌入式无限循环的两种写法;3.变量a的8种不同定义方式;4.static关键字的三种作用;5.const关键字的含义和使用场景;6.volatile关键字的含义及三个应用实例;7.变量存储位置(栈区、静态区、堆区);8.32位系统指针位数;9.局部与全局变量重名规则;10.引用与指针的三点区别。这些内容涵盖了宏定义、变量声明、存储类别、指针等C语言核心概念,对嵌入式开发和系统编程具有重要参考价值。

m0_50382756的博客 160

基于LUT表对鱼眼图像进行畸变校正

当然也可以进行图像的畸变校正操作,已知相机的焦距为fx/fy,光心为cx/cy,像素大小为p(单位mm/pixel)对于畸变校正结果图中像素点(u,v),其对应的原图中的像素坐标(u',v')的计算流程描述如下。1)假设无畸变相机成像模型的焦距和光心与原相机相同,计算得到无畸变相机成像模型中归一化平面坐标(X,Y,Z),其中X=(u-cx)/fx,Y=(v-cy)/fy,Z=1。这里x'/y'的单位为像素。

On my way 639

videocapture 保存图片_OpenCV中VideoCapture类的使用详解

主要记录Python-OpenCV中的VideoCapture类的使用;官方文档;VideoCapture()是用于从视频文件、图片序列、摄像头捕获视频的类;#!/usr/bin/env python#-*- coding:utf-8 -*-# @Time : 19-4-21 上午10:31# @Author : chen"""VideoCapture()的使用"""import cv2impor...

weixin_33229152的博客 646

沙猫群优化算法(SCSO)详解:从沙漠生存智慧到全局优化引擎

本文详细介绍了沙猫群优化算法(SCSO),这是一种新型元启发式优化算法,灵感来源于沙猫在沙漠环境中的卓越狩猎行为。SCSO通过模拟沙猫的低频探测能力和精确攻击策略,将优化问题转化为搜索和捕获"猎物"的过程。算法核心包括探索阶段(全局搜索)和开发阶段(局部精细搜索),通过灵敏度范围模型和自适应控制参数实现两者的平衡。SCSO具有参数简单、收敛性能好等优点,适用于解决复杂全局优化问题。

qq_42212808的博客 201

Opencv学习之VideoCapture类

VideoCapture类可以对视频进行读取操作以及调用摄像头,下面是该类的API。1、VideoCapture类的构造函数:C++: VideoCapture::VideoCapture(); C++: VideoCapture::VideoCapture(const string&amp; filename); C++: VideoCapture::VideoCapture(int devic...

xueluowutong的博客 1330

【ComfyUI专栏】ComfyUI 数字人方案-ComfyUI-EchoMimic

EchoMimic是一个基于图片和语音的数字人生成方案,通过ComfyUI节点实现。该方案安装简单,需下载特定模型文件(Unet、AudioProcessor和VAE)并保存本地。相比其他数字人生成方案,其节点操作更简便,支持多种Pose姿态选择,并能结合视频内容进行姿态同步,通过音频同步口型实现动态内容创建。生成的数字人效果直观,适用于快速创建个性化数字形象。

技术与管理的平衡木- 464

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【opencv入门】VideoCapture类

今天学习了opencv的摄像头调用,记录一下。 OpenCV中提供了专门操作视频的接口类VideoCapture,VideoCapture类可以从文件或者摄像设备中读取视频,提供常用的三种构造函数如下: c++:VideoCapture:VideoCapture() c++:VideoCapture:VideoCapture(const string& filename) c++:VideoCapture:VideoCapture(int device) 参数说明: 实现视频类构造函数。

StudyWinter的博客 856

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Python-OpenCV中VideoCapture类的使用

目录   主要记录Python-OpenCV中的VideoCapture类的使用;官方文档;   VideoCapture()是用于从视频文件、图片序列、摄像头捕获视频的类; #!/usr/bin/env python #-*- coding:utf-8 -*- # @Time : 19-4-21 上午10:31 # @Author :...

weixin_34415923的博客 1713

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

利用OpenCV的VideoCapture类实现视频读操作

利用OpenCV的VideoCapture类实现视频读操作

昊虹AI笔记 7317

Python-OpenCV中VideoCapture类和VideoWriter类的使用

Python-OpenCV中VideoCapture类的使用 Python-OpenCV中的VideoCapture类的官方文档:https://docs.opencv.org/4.0.0/d8/dfe/classcv_1_1VideoCapture.html VideoCapture()是用于从视频文件、图片序列、摄像头捕获视频的类; #!/usr/bin/env python ''' Vide...

selfsongs 7211
上一篇: S32v234 VS2013 demo环境搭建
FroSuccess
博客等级 码龄15年 4粉丝 4原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值