OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义

Posted 昊虹AI笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义相关的知识,希望对你有一定的参考价值。

OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义

OpenCV的类VideoCapture有三种构造函数,原型如下。

C++:

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

Python:

<VideoCapture object>	=	cv.VideoCapture()
<VideoCapture object>	=	cv.VideoCapture(filename[, apiPreference]	)
<VideoCapture object>	=	cv.VideoCapture(index[, apiPreference]	)

从上面的原型可以看出,第二种和第三种原型都有参数apiPreference,它用于选择视频的API接口规范。

参数apiPreference的可选值比较多,官方文档大家可参考下面的链接:
https://docs.opencv.org/4.1.2/d4/d15/group__videoio__flags__base.html#ga023786be1ee68a9105bf2e48c700294d

这里昊虹君根据官方文档的描述,给大家介绍下各可选值的意义。

CAP_ANY
Python: cv.CAP_ANY

CAP_ANY代表自动检测视频文件的API接口规范。

CAP_VFW
Python: cv.CAP_VFW

官方描述:Video For Windows (obsolete, removed).
CAP_VFW代表视频文件的API接口规范为Windows视频文件规范,不过这个规范已经被OpenCV淘汰废除。

CAP_V4L
Python: cv.CAP_V4L

官方描述:V4L/V4L2 capturing support.
V4L2是Video for linux2的简称,为linux中关于视频设备的内核驱动。

CAP_V4L2
Python: cv.CAP_V4L2

CAP_V4L2和CAP_V4L 的意义一样。

CAP_FIREWIRE
Python: cv.CAP_FIREWIRE

官方描述:IEEE 1394 drivers.
CAP_FIREWIR代表视频文件的API接口规范为IEEE1394驱动规范。IEEE1394接口是苹果公司开发的串行标准,又称火线接口(firewire。
IEEE1394支持外设热插拔,可为外设提供电源,省去了外设自带的电源,能连接多个不同设备,支持同步数据传输。

CAP_FIREWARE
Python: cv.CAP_FIREWARE

CAP_FIREWARE和CAP_FIREWIRE的意义一样。

CAP_IEEE1394
Python: cv.CAP_IEEE1394

CAP_IEEE1394和CAP_FIREWIRE的意义一样。

CAP_DC1394
Python: cv.CAP_DC1394

CAP_DC1394和CAP_FIREWIRE的意义一样。

CAP_CMU1394
Python: cv.CAP_CMU1394

CAP_CMU1394和CAP_FIREWIRE的意义一样。

CAP_QT
Python: cv.CAP_QT

官方描述:QuickTime (obsolete, removed).
QuickTime是苹果公司开发的多媒体技术架构,不过这是已经淘汰废除的参数取值。

CAP_UNICAP
Python: cv.CAP_UNICAP

官方描述:Unicap drivers (obsolete, removed) .
CAP_UNICAP是一个已经淘汰废除的参数取值,具体Unicap drivers是个什么东西,昊虹君也不知道。有知道的朋友可以给昊虹君说一下。

CAP_DSHOW
Python: cv.CAP_DSHOW

官方描述:DirectShow (via videoInput).
CAP_DSHOW的详细意义请参看本博文的原版,链接如下:
https://www.hhai.cc/thread-132-1-1.html

CAP_PVAPI
Python: cv.CAP_PVAPI

官方描述:PvAPI, Prosilica GigE SDK.
Prosilica是一家加拿大的公司,是工业相机世界领导者,GigE是他制定的。GigE用来实现在机器视觉领域利用千兆以太网接口进行图像的高速传输。所以这个参数的意义是按工业相机GigE的标准获取视频。

CAP_OPENNI
Python: cv.CAP_OPENNI

官方描述:OpenNI (for Kinect).
OpenNI(开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。OpenNI的主要目的是要形成一个标准的API,来搭建视觉和音频传感器与视觉和音频感知中间件通信的桥梁。
Kinect是微软在2009年6月2日的E3大展上,正式公布的XBOX360体感周边外设。

CAP_OPENNI2
Python: cv.CAP_OPENNI2

官方描述:OpenNI2 (for Kinect).
明白了上面CAP_OPENNI 的意义,就应该明白这个的意义了,所以就不多说了。

CAP_OPENNI_ASUS
Python: cv.CAP_OPENNI_ASUS

官方描述:OpenNI (for Asus Xtion).
OpenNI(开放自然交互)是一个多语言,跨平台的框架,它定义了编写应用程序,并利用其自然交互的API。OpenNI的主要目的是要形成一个标准的API,来搭建视觉和音频传感器与视觉和音频感知中间件通信的桥梁。
Asus Xtion是华硕公司的深度感知摄像头及其相关技术。

CAP_OPENNI2_ASUS
Python: cv.CAP_OPENNI2_ASUS

官方描述:OpenNI2 (for Asus Xtion and Occipital Structure sensors).
明白了上面CAP_OPENNI_ASUS 的意义,就知道了这个的意义了,所以就不多说了。

CAP_android
Python: cv.CAP_ANDROID

官方描述:Android - not used.
为安卓系统保留的参数,目前未启用。

CAP_XIAPI
Python: cv.CAP_XIAPI

官方描述:XIMEA Camera API.
XIMEA 是德国的一家公司,专业生成工业相机。

CAP_AVFOUNDATION
Python: cv.CAP_AVFOUNDATION

官方描述:AVFoundation framework for ios (OS X Lion will have the same API).
AVFoundation是苹果在iOS和OS X系统中用于处理基于时间的媒体数据的框架。

CAP_GIGANETIX
Python: cv.CAP_GIGANETIX

官方描述:Smartek Giganetix GigEVisionSDK.
Smartek是一家生产工业相机的德国公司,Giganetix是其生产的一种工业相机的名称,GigEVisionSDK是这款工业相机的SDK。

CAP_MSMF
Python: cv.CAP_MSMF

官方描述:Microsoft Media Foundation (via videoInput).
Microsoft Media Foundation是微软公司的新一代多媒体开发平台,用以取代原来的Directshow,为了满足现在多媒体播放的高清晰,高品质,颜色管理,以及充分利用硬件加速等功能而建立的新一代开发平台。

CAP_WINRT
Python: cv.CAP_WINRT

官方描述:Microsoft Windows Runtime using Media Foundation.
微软实时窗口,技术基础是Microsoft Media Foundation 。

CAP_INTELPERC
Python: cv.CAP_INTELPERC

官方描述:RealSense (former Intel Perceptual Computing SDK).
Intel公司的RealSense深度摄像头产品,就是之前的英特尔感知计算SDK。

CAP_REALSENSE
Python: cv.CAP_REALSENSE

官方描述:Synonym for CAP_INTELPERC.
CAP_REALSENSE 和 CAP_INTELPERC的意义一样。

CAP_GPHOTO2
Python: cv.CAP_GPHOTO2

官方描述:gPhoto2 connection.
gPhoto2是一个免费软件,提供了在类Unix系统上通过终端来控制数码相机的功能。

CAP_GSTREAMER
Python: cv.CAP_GSTREAMER

官方描述:GStreamer.
Gstreamer是一个支持Windows,Linux,Android, iOS的跨平台的多媒体框架,应用程序可以通过管道(Pipeline)的方式,将多媒体处理的各个步骤串联起来,达到预期的效果。每个步骤通过元素(Element)基于GObject对象系统通过插件(plugins)的方式实现,方便了各项功能的扩展。

CAP_FFMPEG
Python: cv.CAP_FFMPEG

官方描述:Open and record video file or stream using the FFMPEG library.
使用FFMPEG library找开视频文件或记录视频流。

CAP_IMAGES
Python: cv.CAP_IMAGES

官方描述:OpenCV Image Sequence (e.g. img_%02d.jpg).
打开OpenCV的序列图像。

CAP_ARAVIS
Python: cv.CAP_ARAVIS

官方描述:Aravis SDK.
Aravis视觉平台是一款是基于Glib/Gobject的库,用于使用工业摄像机进行视频采集。目前,它实现了工业相机使用的千兆以太网和USB3.0协议。它还提供了基本的以太网摄像机模拟器和简单的视频查看器。用户可以通过我们现在常用的Linux操作系统来实现对于工业相机的操作。

CAP_OPENCV_MJPEG
Python: cv.CAP_OPENCV_MJPEG

官方描述:Built-in OpenCV MotionJPEG codec.
给OpenCV嵌入MotionJPEG编解码器。

CAP_INTEL_MFX
Python: cv.CAP_INTEL_MFX

官方描述:Intel MediaSDK.
英特尔媒体SDK。

CAP_XINE
Python: cv.CAP_XINE

官方描述:XINE engine (Linux).
XINE engine是什么鬼?昊虹君也不知道,有知道的朋友可以给昊虹君说一说。

总结一下,这里面绝大部分都是与具体的某个规范有关的可选值,除去第一个自动检测,昊虹君觉得有两个值得注意,具体是哪两个,请大家参看本博文的原版,链接如下:
https://www.hhai.cc/thread-132-1-1.html

以上是关于OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义的主要内容,如果未能解决你的问题,请参考以下文章

Qt-OpenCV学习笔记--读取视频--VideoCapture()

OpenCV-视频读写(java版)

视频操作

c#判断视频是不是能播放

OpenCV这么简单为啥不学——2逐帧播放视频(VideoCapture函数waitKey函数0xFF == ord(‘1‘))

对opencv读取的图片进行像素调整(1080, 1920) 1.cv2.VideoCapture(构造图片读取) 2.cv2.nameWindow(构建视频显示的窗口) 3.cv2.setWindo