VideoCapture类常用API个人总结_晴明大大的博客-程序员宝宝

技术标签: Opencv  VideoCapture  

一下“#”后的内容皆为注释

相关API :

1、创建Video Capture类的构造函数:

C++: VideoCapture::VideoCapture()# VideoCapture video(0)(此为默认使用电脑自带摄像头)
C++: VideoCapture::VideoCapture(const string& filename)#VideoCapture video(“1.avi”)
C++: VideoCapture::VideoCapture(int device)#VideoCapture video(1/2/3) (有多个摄像头时可用1、2、3使用不同摄像头)

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

2、其他相关API

C++: bool VideoCapture::open(const string& filename) #先实例化再初始化:VideoCapture capture;capture.open("dog.avi");在实例化的同时进行初始化:VideoCapture("dog.avi");
C++: bool VideoCapture::open(int device) #device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。
C++: bool VideoCapture::isOpened()#功能:判断视频读取或者摄像头调用是否成功,成功则返回true。
C++: void VideoCapture::release() #关闭视频文件或摄像头。
C++: bool VideoCapture::grab() #功能:从视频文件或捕获设备中抓取下一个帧,假如调用成功返回true。
C++: bool VideoCapture::retrieve(Mat& image, int channel=0) #功能:解码并且返回刚刚抓取的视频帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。
C++: bool VideoCapture::read(Mat& image) #功能:该函数结合VideoCapture::grab()和VideoCapture::retrieve()其中之一被调用,用于捕获、解码和返回下一个视频帧这是一个最方便的函数
                    对于读取视频文件或者捕获数据从解码和返回刚刚捕获的帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。
C++: double VideoCapture::get(int propId) #功能:一个视频有很多属性,比如:帧率、总帧数、尺寸、格式等,VideoCapture的get方法可以获取这些属性。Note: 
                    如果查询的视频属性是VideoCapture类不支持的,将会返回0。见附录1。//get()是获取
C++: bool VideoCapture::set(int propertyId, double value) #功能:设置VideoCapture类的属性,设置成功返回ture,失败返回false。参数:第一个是属性ID,第二个是该属性要设置的值。//set()是设置


附录1:
VideoCapture::get() / set() (设置是永久改变的)参数

常用:
CV_CAP_PROP_FRAME_WIDTH 视频流帧的宽度/一帧图像的宽度
CV_CAP_PROP_FRAME_HEIGHT 视频流帧的高./一帧图像的高度
CV_CAP_PROP_FPS 帧率.
CV_CAP_PROP_FRAME_COUNT 视频文件的帧数.
CV_CAP_PROP_BRIGHTNESS 图像亮度 (只对摄像头).
CV_CAP_PROP_CONTRAST 图像对比度 (只对摄像头).
CV_CAP_PROP_SATURATION 图像饱和度 (只对摄像头).
CV_CAP_PROP_HUE 色调 (只对摄像头).
CV_CAP_PROP_GAIN 增益(只对摄像头).
CV_CAP_PROP_EXPOSURE 曝光(只对摄像头).

不常用:
CV_CAP_PROP_POS_MSEC 视频当前点的毫秒值或视频捕捉的时间戳
CV_CAP_PROP_POS_FRAMES 下次将被捕获的0基索引的帧
CV_CAP_PROP_POS_AVI_RATIO 视频文件的相关位置: 0 - 视频开始, 1 - 视频结束.
CV_CAP_PROP_FOURCC  4字符编码的编码器.
CV_CAP_PROP_FORMAT 由retrieve()返回矩阵对象的格式 .
CV_CAP_PROP_MODE 后端指定值指示当前捕捉的模式.
CV_CAP_PROP_CONVERT_RGB 布尔型标记图像是否应该被转换为RGB.
CV_CAP_PROP_WHITE_BALANCE 白平衡(目前不支持)
CV_CAP_PROP_RECTIFICATION 立体相机的矫正标记(note: only supported by DC1394 v 2.x backend currently

以上为个人总结的笔记,若有不足多多见谅。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/g944468183/article/details/82223562

智能推荐

pm2安装与使用(生产环境部署)_NPException的博客-程序员宝宝_pm2部署

PM2是什么PM2(Process Manager 2)是具有内置负载均衡器的Node.js应用程序的生产运行时和进程管理器。 它允许您永久保持应用程序活跃,无需停机即可重新加载它们,并促进常见的Devops任务。PM2特性日志管理:应用程序日志保存在服务器的硬盘中~/.pm2/logs/负载均衡:PM2可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许您...

kali安装及vmware tools 、kali源更新_梦之噷的博客-程序员宝宝

首先在vm里面新建虚拟机,直接选择典型,然后下一步。到这一步选择 稍后安装操作系统选择Linux /Debian 8.x 64位  然后选择给虚拟机安装位置,并给虚拟机命名这里处理器数量选择2,继续下一步  设置内存为4G,继续下一步 这里选择 使用桥接网络这里选择磁盘容量40G。 然后选择编辑虚拟机设置 ...

修改机器名称后Oracle无法启动解决方法_xiangluping的博客-程序员宝宝

修改机器名称后Oracle无法启动机器上一直装有Oracle,但是项目开发的数据库用的mysql,就没注意,突然有事要用Oracle,但是发生启动OracleDBConsole服务时出现如图的错误启动OracleServiceORCL没有出现问题启动监听服务时没有出现错误,看到是已启动,但是刷新服务列表监听器服务时没有起来。开始还以为时Oracle不好使,从网上查到可能是修改机器名导致...

C++多线程之旅-future等待事件_或许 没有的博客-程序员宝宝_c++ future wait

目录前言future总结前言前一篇文章讲到了关于condition_variable的使用,但是这种方法太过于底层了,不是很方面,而且需要对调用方进行操作。这样对于程序员来说太过于麻烦,引入一个全新的接口,让被调用的线程自动进行,调用线程直接调用结果就行。这就是C++引入的future()类,而且这种方式可以在不同线程之间传递数据。我们首先假设情况现在有两个线程,线程A等待线程B执行结果,线程B执行完成之后将结果返回给线程A。之前在condition_variable里面是在线程外定义一个全局变量,但

SpringBoot项目在腾讯云服务器部署(多图)_清·梦的博客-程序员宝宝_腾讯云服务器部署springboot

1、写好项目打包2、配置腾讯云服务器安全组如果安全组没有开通 443 80端口 就会服务器无法访问外网,我项目端口为7001,这里就要放开。3、连接服务器工具链接:https://pan.baidu.com/s/1i7jj9qq7s_PANJidH2Zccw提取码:f89k4、服务器安装mysql,jdkmysql:MySQL 8.0.19安装教程(windows 64位)jdk:Linux安装jdk(两种方式)5、连接服务器,上传项目6、运行项目进入jar包所在文件夹:cd /h

Postman—添加断言和检查点_初原师兄 baci的博客-程序员宝宝_postman检查点怎么写

1、打开百度新闻的一个简单的Get请求。点击Send,查看响应信息。2、找一个明显的地方 设置检查点及断言这行吧—【百度新闻——海量中文资讯平台】点击Url下方的Tests,这里设置检查点及断言。点进来后这里是空的,你如果熟悉JavaScript的函数,可以直接手动输入,如果不熟悉,postman在右侧已经提供了tests片段。点击2, 在Tests框内出现一段代码片段,‘“Status code is 200” 意思是生成断言httpCode为200的代码片段。点击3, 在Tests框内出现一段

随便推点

算法设计与分析之动态规划法_红心火柴的博客-程序员宝宝

动态规划是运筹学的一个分支,它是解决多阶段决策过程最优化问题的一种方法。 动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),可以人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。

Autoencoders_tang0057的博客-程序员宝宝

(笔记总结需要!目前粗糙潦草,后期会不断修改。若对您阅读造成不便,望请见谅!!)7.Autoencoders:compress features, same function like PCAs.

记录——《C Primer Plus (第五版)》第七章编程练习第九题_zgscsed的博客-程序员宝宝

编写一个程序,接受一个整数输入,然后显示所有小于或等于该数的素数。# include <stdio.h>int main(void){ long int in; bool isprime = true; printf("请输入一个整数:\n"); scanf("%d", &in); for(long int j=2; j<=in; j++) {

在使用nltk的时候,出现类似:Resource punkt not found的时候解决方法_lucas-nlp的博客-程序员宝宝

我通过python3 -m pip install nltk的时候安装成功后,准备做一个词性标注的例子,但是出现如下错误,说某个资源没有找到;解决方法如下:错误截图:Resource punkt not found解决方法:(命令行操作-打开nltk下载器)python3import nltknltk.download()然后在server index输入官网链接,然后从Corpora 、mode...

机器视觉——光源选型_QtHalcon的博客-程序员宝宝_视觉光源选型

https://www.keyence.com.cn/landing/gen/vision_salon_07.jsphttps://blog.csdn.net/qq_41375318/article/details/111224034http://www.ly-auto.com/news/gongsixinwen/148.htmlhttps://blog.csdn.net/weixin_42258743/article/details/107380953http://www.sk...

推荐文章

热门文章

相关标签