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这么简单为啥不学——2逐帧播放视频(VideoCapture函数waitKey函数0xFF == ord(‘1‘))
对opencv读取的图片进行像素调整(1080, 1920) 1.cv2.VideoCapture(构造图片读取) 2.cv2.nameWindow(构建视频显示的窗口) 3.cv2.setWindo