昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 1567|回复: 0
收起左侧

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

[复制链接]

238

主题

241

帖子

931

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
931
昊虹君 发表于 2022-11-14 10:17 | 显示全部楼层 |阅读模式
OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义

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

C++:
  1. cv::VideoCapture::VideoCapture()
  2. cv::VideoCapture::VideoCapture(const String & filename,int apiPreference = CAP_ANY)
  3. cv::VideoCapture::VideoCapture(int index,int apiPreference = CAP_ANY)
复制代码

Python:
  1. <VideoCapture object> = cv.VideoCapture()
  2. <VideoCapture object> = cv.VideoCapture(filename[, apiPreference])
  3. <VideoCapture object> = cv.VideoCapture(index[, apiPreference])
复制代码

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

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

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

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代表视频文件以输入流为接口规范,比如摄像头就是这样一种存在,如果您在打开摄像头时出现“短时间内连续打开摄像头就会报错”的bug,不妨将apiPreference的值设为CAP_DSHOW试一试。

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是什么鬼?昊虹君也不知道,有知道的朋友可以给昊虹君说一说。

总结一下:
这里面绝大部分都是与具体的某个规范有关的可选值,除去第一个自动检测,昊虹君觉得有以下两个值得注意:
① CAP_DSHOW 当你要使用自己计算机上的摄像头作为视频源的时候,不妨关注一下这个参数。
② CAP_IMAGES 当你想读取序列图片文件时,不妨关注一下这个参数。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2024076726 )

GMT+8, 2024-5-19 15:18 , Processed in 0.021024 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表