OpenCV 4.13.0
开源计算机视觉库 (Open Source Computer Vision)
正在加载...
正在搜索...
未找到匹配项
cv::VideoCapture 类参考

用于从视频文件、图像序列或摄像头捕获视频的类。更多...

#include <opencv2/videoio.hpp>

cv::VideoCapture 的协作图

公开成员函数

 VideoCapture ()
 默认构造函数。
 
 VideoCapture (const Ptr< IStreamReader > &source, int apiPreference, const std::vector< int > &params)
 使用数据流打开视频。
 
 VideoCapture (const String &filename, int apiPreference, const std::vector< int > &params)
 使用 API 偏好和参数打开视频文件、捕获设备或 IP 视频流进行视频捕获。
 
 VideoCapture (const String &filename, int apiPreference=CAP_ANY)
 使用 API 偏好打开视频文件、捕获设备或 IP 视频流进行视频捕获。
 
 VideoCapture (int index, int apiPreference, const std::vector< int > &params)
 使用 API 偏好和参数打开摄像头进行视频捕获。
 
 VideoCapture (int index, int apiPreference=CAP_ANY)
 打开摄像头进行视频捕获。
 
virtual ~VideoCapture ()
 默认析构函数。
 
virtual double get (int propId) const
 返回指定的 VideoCapture 属性。
 
String getBackendName () const
 返回所使用的后端 API 名称。
 
bool getExceptionMode () const
 查询异常模式是否激活
 
virtual bool grab ()
 从视频文件或捕获设备中抓取下一帧。
 
virtual bool isOpened () const
 如果视频捕获已初始化,则返回 true。
 
virtual bool open (const Ptr< IStreamReader > &source, int apiPreference, const std::vector< int > &params)
 使用数据流打开视频。
 
virtual bool open (const String &filename, int apiPreference, const std::vector< int > &params)
 使用 API 偏好和参数打开视频文件、捕获设备或 IP 视频流进行视频捕获。
 
virtual bool open (const String &filename, int apiPreference=CAP_ANY)
 打开视频文件、捕获设备或 IP 视频流进行视频捕获。
 
virtual bool open (int index, int apiPreference, const std::vector< int > &params)
 使用 API 偏好和参数打开摄像头进行视频捕获。
 
virtual bool open (int index, int apiPreference=CAP_ANY)
 打开摄像头进行视频捕获。
 
virtual VideoCaptureoperator>> (Mat &image)
 流运算符,用于读取下一帧视频帧。
 
virtual VideoCaptureoperator>> (UMat &image)
 
virtual bool read (OutputArray image)
 抓取、解码并返回下一个视频帧。
 
virtual void release (释放) ()
 关闭视频文件或捕获设备。
 
virtual bool retrieve (OutputArray image, int flag=0)
 解码并返回已抓取的视频帧。
 
virtual bool set (int propId, double value)
 VideoCapture 中设置属性。
 
void setExceptionMode (bool enable)
 

静态公开成员函数

static bool waitAny (const std::vector< VideoCapture > &streams, std::vector< int > &readyIndex, int64 timeoutNs=0)
 等待来自 VideoCapture 的可用帧。
 

保护属性

Ptr< CvCapturecap
 
Ptr< IVideoCapture > icap
 
bool throwOnFail
 

友元

class internal::VideoCapturePrivateAccessor
 

详细说明

从视频文件、图像序列或摄像头捕获视频的类。

该类提供 C++ API,用于从摄像头捕获视频或读取视频文件和图像序列。

以下是如何使用该类:

#include <opencv2/core.hpp>
#include <iostream>
#include <stdio.h>
using namespace cv;
using namespace std;
int main(int, char**)
{
Mat frame;
//--- 初始化 VIDEOCAPTURE
// 使用默认 API 打开默认摄像头
// cap.open(0);
// 或者高级用法:选择任何 API 后端
int deviceID = 0; // 0 = 打开默认摄像头
int apiID = cv::CAP_ANY; // 0 = 自动检测默认 API
// 使用选定的 API 打开选定的摄像头
cap.open(deviceID, apiID);
// 检查是否成功
if (!cap.isOpened()) {
cerr << "ERROR! 无法打开摄像头\n";
return -1;
}
//--- 抓取并写入循环
cout << "开始抓取" << endl
<< "按任意键终止" << endl;
for (;;)
{
// 等待来自摄像头的新帧并将其存储到 'frame' 中
cap.read(frame);
// 检查是否成功
if (frame.empty()) {
cerr << "ERROR! 抓取到空白帧\n";
break;
}
// 显示实时图像并等待按键,超时时间足以显示图像
imshow("Live", frame);
if (waitKey(5) >= 0)
break;
}
// 摄像头将在 VideoCapture 析构函数中自动去初始化
return 0;
}
n 维密集数组类
定义于 mat.hpp:840
bool empty() const
如果数组没有元素,则返回 true。
从视频文件、图像序列或摄像头捕获视频的类。
定义 videoio.hpp:786
virtual bool read(OutputArray image)
抓取、解码并返回下一个视频帧。
virtual bool open(const String &filename, int apiPreference=CAP_ANY)
打开视频文件、捕获设备或 IP 视频流进行视频捕获。
virtual bool isOpened() const
如果视频捕获已初始化,则返回 true。
@ CAP_ANY
自动检测 == 0。
定义 videoio.hpp:96
int main(int argc, char *argv[])
定义 highgui_qt.cpp:3
定义 core.hpp:107
STL 命名空间。
注意
C API 中,使用黑盒结构 CvCapture 而不是 VideoCapture。
  • (C++) 使用 VideoCapture 接口的基本示例可在 OPENCV_SOURCE_CODE/samples/cpp/videocapture_starter.cpp 中找到
  • (Python) 使用 VideoCapture 接口的基本示例可在 OPENCV_SOURCE_CODE/samples/python/video.py 中找到
  • (Python) 多线程视频处理示例可在 OPENCV_SOURCE_CODE/samples/python/video_threaded.py 中找到
  • (Python) 展示 Video4Linux2 后端某些功能的 VideoCapture 示例 OPENCV_SOURCE_CODE/samples/python/video_v4l2.py
示例
samples/cpp/camshiftdemo.cpp, samples/cpp/facedetect.cpp, samples/cpp/laplace.cpp, samples/cpp/lkdemo.cpp, samples/cpp/peopledetect.cpp, samples/cpp/polar_transforms.cpp, samples/cpp/segment_objects.cpp, samples/cpp/train_HOG.cpp, samples/cpp/tutorial_code/videoio/video-write/video-write.cpp, samples/cpp/videowriter_basic.cpp, samples/dnn/classification.cpp, samples/dnn/object_detection.cpp, samples/dnn/segmentation.cpp, samples/dnn/text_detection.cpp, 和 samples/tapi/hog.cpp

构造函数与析构函数说明

◆ VideoCapture() [1/6]

cv::VideoCapture::VideoCapture ( )
Python
cv.VideoCapture() -> <VideoCapture 对象>
cv.VideoCapture(filename[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(filename, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(index[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(index, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(source, apiPreference, params) -> <VideoCapture 对象>

默认构造函数。

注意
C API 中,完成视频操作后,使用 cvReleaseCapture() 释放 CvCapture 结构,或者使用 Ptr<CvCapture>,它会在析构函数中自动调用 cvReleaseCapture()。

◆ VideoCapture() [2/6]

cv::VideoCapture::VideoCapture ( const String & filename,
int apiPreference = CAP_ANY )
explicit (显式)
Python
cv.VideoCapture() -> <VideoCapture 对象>
cv.VideoCapture(filename[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(filename, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(index[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(index, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(source, apiPreference, params) -> <VideoCapture 对象>

使用 API 偏好打开视频文件、捕获设备或 IP 视频流进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

参数
filename它可以是
  • 视频文件名(例如 video.avi
  • 或图像序列(例如 img_%02d.jpg,它将读取 img_00.jpg, img_01.jpg, img_02.jpg, ... 等样本)
  • 或视频流的 URL(例如 protocol://host:port/script_name?script_params|auth
  • 或 GStreamer 管道字符串,如果 GStreamer 用作后端,则采用 gst-launch 工具格式。请注意,每个视频流或 IP 摄像头馈送都有其自己的 URL 方案。请参阅源流文档以了解正确的 URL。
apiPreference首选的捕获 API 后端。可用于强制使用特定的读取器实现,如果存在多个可用实现:例如 cv::CAP_FFMPEGcv::CAP_IMAGEScv::CAP_DSHOW
另请参阅
cv::VideoCaptureAPIs

◆ VideoCapture() [3/6]

cv::VideoCapture::VideoCapture ( const String & filename,
int apiPreference,
const std::vector< int > & params )
explicit (显式)
Python
cv.VideoCapture() -> <VideoCapture 对象>
cv.VideoCapture(filename[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(filename, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(index[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(index, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(source, apiPreference, params) -> <VideoCapture 对象>

使用 API 偏好和参数打开视频文件、捕获设备或 IP 视频流进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

params 参数允许指定额外参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)。请参阅 cv::VideoCaptureProperties

◆ VideoCapture() [4/6]

cv::VideoCapture::VideoCapture ( int index,
int apiPreference = CAP_ANY )
explicit (显式)
Python
cv.VideoCapture() -> <VideoCapture 对象>
cv.VideoCapture(filename[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(filename, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(index[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(index, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(source, apiPreference, params) -> <VideoCapture 对象>

打开摄像头进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

参数
index要打开的视频捕获设备的 id。要使用默认后端打开默认摄像头,只需传递 0。(为了向后兼容,当 apiPreference 为 CAP_ANY 时,使用 camera_id + domain_offset (CAP_*) 是有效的)
apiPreference首选的捕获 API 后端。可用于强制使用特定的读取器实现,如果存在多个可用实现:例如 cv::CAP_DSHOWcv::CAP_MSMFcv::CAP_V4L
另请参阅
cv::VideoCaptureAPIs

◆ VideoCapture() [5/6]

cv::VideoCapture::VideoCapture ( int index,
int apiPreference,
const std::vector< int > & params )
explicit (显式)
Python
cv.VideoCapture() -> <VideoCapture 对象>
cv.VideoCapture(filename[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(filename, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(index[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(index, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(source, apiPreference, params) -> <VideoCapture 对象>

使用 API 偏好和参数打开摄像头进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

params 参数允许指定额外参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)。请参阅 cv::VideoCaptureProperties

◆ VideoCapture() [6/6]

cv::VideoCapture::VideoCapture ( const Ptr< IStreamReader > & source,
int apiPreference,
const std::vector< int > & params )
Python
cv.VideoCapture() -> <VideoCapture 对象>
cv.VideoCapture(filename[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(filename, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(index[, apiPreference]) -> <VideoCapture 对象>
cv.VideoCapture(index, apiPreference, params) -> <VideoCapture 对象>
cv.VideoCapture(source, apiPreference, params) -> <VideoCapture 对象>

使用数据流打开视频。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

params 参数允许指定额外参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)。请参阅 cv::VideoCaptureProperties

◆ ~VideoCapture()

virtual cv::VideoCapture::~VideoCapture ( )
virtual

默认析构函数。

该方法首先调用 VideoCapture::release 以关闭已打开的文件或摄像头。

成员函数说明

◆ get()

virtual double cv::VideoCapture::get ( int propId) const
virtual
Python
cv.VideoCapture.get(propId) -> retval

返回指定的 VideoCapture 属性。

参数
propId来自 cv::VideoCaptureProperties 的属性标识符(例如 cv::CAP_PROP_POS_MSECcv::CAP_PROP_POS_FRAMES 等)或来自 视频 I/O API 后端的附加标志
返回
指定属性的值。当查询 VideoCapture 实例使用的后端不支持的属性时,返回值为 0。
注意
读取/写入属性涉及多个层。在此链中可能会发生一些意外结果。
VideoCapture -> API 后端 -> 操作系统 -> 设备驱动程序 -> 设备硬件
返回的值可能与设备实际使用的值不同,或者它可能使用设备依赖规则(例如步长或百分比)进行编码。实际行为取决于设备驱动程序和 API 后端。
示例
samples/cpp/laplace.cpp.

◆ getBackendName()

String cv::VideoCapture::getBackendName ( ) const
Python
cv.VideoCapture.getBackendName() -> retval

返回所使用的后端 API 名称。

注意
流应该已打开。

◆ getExceptionMode()

bool cv::VideoCapture::getExceptionMode ( ) const
内联
Python
cv.VideoCapture.getExceptionMode() -> retval

查询异常模式是否激活

◆ grab()

virtual bool cv::VideoCapture::grab ( )
virtual
Python
cv.VideoCapture.grab() -> retval

从视频文件或捕获设备中抓取下一帧。

返回
成功时返回 true(非零)。

该方法/函数从视频文件或摄像头抓取下一帧,并在成功时返回 true(非零)。

该函数的主要用途是在多摄像头环境中,特别是当摄像头没有硬件同步时。也就是说,您为每个摄像头调用 VideoCapture::grab(),然后为每个摄像头调用较慢的 VideoCapture::retrieve() 方法来解码和获取帧。这样可以消除去马赛克或运动 JPEG 解压缩等的开销,并且从不同摄像头检索到的帧在时间上会更接近。

此外,当连接的摄像头是多头(例如,立体摄像头或 Kinect 设备)时,从其检索数据的正确方法是先调用 VideoCapture::grab(),然后使用不同的通道参数值调用 VideoCapture::retrieve() 一次或多次。

使用 Kinect 和其他 OpenNI 兼容深度传感器

◆ isOpened()

virtual bool cv::VideoCapture::isOpened ( ) const
virtual
Python
cv.VideoCapture.isOpened() -> retval

◆ open() [1/5]

virtual bool cv::VideoCapture::open ( const Ptr< IStreamReader > & source,
int apiPreference,
const std::vector< int > & params )
virtual
Python
cv.VideoCapture.open(filename[, apiPreference]) -> retval
cv.VideoCapture.open(filename, apiPreference, params) -> retval
cv.VideoCapture.open(index[, apiPreference]) -> retval
cv.VideoCapture.open(index, apiPreference, params) -> retval
cv.VideoCapture.open(source, apiPreference, params) -> retval

使用数据流打开视频。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

params 参数允许指定额外参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)。请参阅 cv::VideoCaptureProperties

返回
如果文件已成功打开,则为 true

该方法首先调用 VideoCapture::release 以关闭已打开的文件或摄像头。

◆ open() [2/5]

virtual bool cv::VideoCapture::open ( const String & filename,
int apiPreference,
const std::vector< int > & params )
virtual
Python
cv.VideoCapture.open(filename[, apiPreference]) -> retval
cv.VideoCapture.open(filename, apiPreference, params) -> retval
cv.VideoCapture.open(index[, apiPreference]) -> retval
cv.VideoCapture.open(index, apiPreference, params) -> retval
cv.VideoCapture.open(source, apiPreference, params) -> retval

使用 API 偏好和参数打开视频文件、捕获设备或 IP 视频流进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

params 参数允许指定额外参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)。请参阅 cv::VideoCaptureProperties

返回
如果文件已成功打开,则为 true

该方法首先调用 VideoCapture::release 以关闭已打开的文件或摄像头。

◆ open() [3/5]

virtual bool cv::VideoCapture::open ( const String & filename,
int apiPreference = CAP_ANY )
virtual
Python
cv.VideoCapture.open(filename[, apiPreference]) -> retval
cv.VideoCapture.open(filename, apiPreference, params) -> retval
cv.VideoCapture.open(index[, apiPreference]) -> retval
cv.VideoCapture.open(index, apiPreference, params) -> retval
cv.VideoCapture.open(source, apiPreference, params) -> retval

打开视频文件、捕获设备或 IP 视频流进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

参数与构造函数 VideoCapture(const String& filename, int apiPreference = CAP_ANY) 相同。

返回
如果文件已成功打开,则为 true

该方法首先调用 VideoCapture::release 以关闭已打开的文件或摄像头。

示例
samples/cpp/camshiftdemo.cpp, samples/cpp/facedetect.cpp, samples/cpp/laplace.cpp, samples/cpp/lkdemo.cpp, samples/cpp/peopledetect.cpp, samples/cpp/polar_transforms.cpp, samples/cpp/segment_objects.cpp, samples/cpp/train_HOG.cpp, samples/dnn/classification.cpp, samples/dnn/object_detection.cpp, samples/dnn/segmentation.cpp, samples/dnn/text_detection.cpp, 和 samples/tapi/hog.cpp

◆ open() [4/5]

virtual bool cv::VideoCapture::open ( int index,
int apiPreference,
const std::vector< int > & params )
virtual
Python
cv.VideoCapture.open(filename[, apiPreference]) -> retval
cv.VideoCapture.open(filename, apiPreference, params) -> retval
cv.VideoCapture.open(index[, apiPreference]) -> retval
cv.VideoCapture.open(index, apiPreference, params) -> retval
cv.VideoCapture.open(source, apiPreference, params) -> retval

使用 API 偏好和参数打开摄像头进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

params 参数允许指定额外参数,编码为对 (paramId_1, paramValue_1, paramId_2, paramValue_2, ...)。请参阅 cv::VideoCaptureProperties

返回
如果摄像头已成功打开,则为 true

该方法首先调用 VideoCapture::release 以关闭已打开的文件或摄像头。

◆ open() [5/5]

virtual bool cv::VideoCapture::open ( int index,
int apiPreference = CAP_ANY )
virtual
Python
cv.VideoCapture.open(filename[, apiPreference]) -> retval
cv.VideoCapture.open(filename, apiPreference, params) -> retval
cv.VideoCapture.open(index[, apiPreference]) -> retval
cv.VideoCapture.open(index, apiPreference, params) -> retval
cv.VideoCapture.open(source, apiPreference, params) -> retval

打开摄像头进行视频捕获。

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

参数与构造函数 VideoCapture(int index, int apiPreference = CAP_ANY) 相同。

返回
如果摄像头已成功打开,则为 true

该方法首先调用 VideoCapture::release 以关闭已打开的文件或摄像头。

◆ operator>>() [1/2]

virtual VideoCapture & cv::VideoCapture::operator>> ( Mat & 图像)
virtual

流运算符,用于读取下一帧视频帧。

另请参阅
read()

◆ operator>>() [2/2]

virtual VideoCapture & cv::VideoCapture::operator>> ( UMat & 图像)
virtual

这是一个重载的成员函数,为方便起见而提供。它与上述函数的区别仅在于所接受的参数不同。

另请参阅
read()

◆ read()

virtual bool cv::VideoCapture::read ( OutputArray 图像)
virtual
Python
cv.VideoCapture.read([, image]) -> retval, image

抓取、解码并返回下一个视频帧。

参数
[out]图像视频帧在这里返回。如果没有抓取到帧,图像将为空。
返回
如果没有抓取到帧,则为 false

该方法/函数将 VideoCapture::grab()VideoCapture::retrieve() 组合在一个调用中。这是读取视频文件或从设备捕获数据最方便的方法,它解码并返回刚刚抓取的帧。如果没有抓取到帧(摄像头已断开连接,或视频文件中没有更多帧),该方法返回 false,并且该函数返回空图像(对于 cv::Mat,使用 Mat::empty() 进行测试)。

注意
C API 中,函数 cvRetrieveFrame() 和 cv.RetrieveFrame() 返回存储在视频捕获结构中的图像。不允许修改或释放图像!您可以使用 cvCloneImage 复制帧,然后对副本进行任何操作。
示例
samples/cpp/videowriter_basic.cpp.

◆ release()

virtual void cv::VideoCapture::release ( )
virtual
Python
cv.VideoCapture.release() -> None

关闭视频文件或捕获设备。

该方法由随后的 VideoCapture::openVideoCapture 析构函数自动调用。

C 函数还释放内存并清除 *capture 指针。

◆ retrieve()

virtual bool cv::VideoCapture::retrieve ( OutputArray 图像,
int flag = 0 )
virtual
Python
cv.VideoCapture.retrieve([, image[, flag]]) -> retval, image

解码并返回已抓取的视频帧。

参数
[out]图像视频帧在这里返回。如果没有抓取到帧,图像将为空。
标志它可能是一个帧索引或一个驱动程序特定的标志
返回
如果没有抓取到帧,则为 false

该方法解码并返回刚刚抓取的帧。如果没有抓取到帧(摄像头已断开连接,或视频文件中没有更多帧),该方法返回 false,并且该函数返回空图像(对于 cv::Mat,使用 Mat::empty() 进行测试)。

另请参阅
read()
注意
C API 中,函数 cvRetrieveFrame() 和 cv.RetrieveFrame() 返回存储在视频捕获结构中的图像。不允许修改或释放图像!您可以使用 cvCloneImage 复制帧,然后对副本进行任何操作。

◆ set()

virtual bool cv::VideoCapture::set ( int propId,
double value (值) )
virtual
Python
cv.VideoCapture.set(propId, value) -> retval

VideoCapture 中设置属性。

参数
propId来自 cv::VideoCaptureProperties 的属性标识符(例如 cv::CAP_PROP_POS_MSECcv::CAP_PROP_POS_FRAMES 等)或来自 视频 I/O API 后端的附加标志
value (值)属性的值。
返回
如果 VideoCapture 实例使用的后端支持该属性,则为 true
注意
即使它返回 true,这也不能保证属性值已被捕获设备接受。请参阅 VideoCapture::get() 中的注释。
示例
samples/cpp/laplace.cpp.

◆ setExceptionMode()

void cv::VideoCapture::setExceptionMode ( bool enable)
内联
Python
cv.VideoCapture.setExceptionMode(enable) -> None

切换异常模式

如果方法不成功,则引发异常而不是返回错误代码

◆ waitAny()

static bool cv::VideoCapture::waitAny ( const std::vector< VideoCapture > & streams,
std::vector< int > & readyIndex,
int64 timeoutNs = 0 )
static (静态)
Python
cv.VideoCapture.waitAny(streams[, timeoutNs]) -> retval, readyIndex
cv.VideoCapture_waitAny(streams[, timeoutNs]) -> retval, readyIndex

等待来自 VideoCapture 的可用帧。

参数
streams输入视频流
readyIndex具有已抓取帧的流索引(可用于 .retrieve() 来获取实际帧)
timeoutNs纳秒数(0 - 无限)
返回
如果 streamReady 不为空,则为 true
异常
异常流错误(检查 .isOpened() 以过滤掉格式错误的流)或 VideoCapture 类型不受支持时引发异常。

该函数的主要用途是在多摄像头环境中。该方法填充就绪状态向量,如果摄像头准备就绪,则抓取视频帧。

此调用后使用 VideoCapture::retrieve() 解码并获取帧数据。

友元及相关符号文档

◆ internal::VideoCapturePrivateAccessor

friend class internal::VideoCapturePrivateAccessor
友元

成员数据文档

◆ cap

Ptr<CvCapture> cv::VideoCapture::cap
保护

◆ icap

Ptr<IVideoCapture> cv::VideoCapture::icap
保护

◆ throwOnFail

bool cv::VideoCapture::throwOnFail
保护

该类的文档由以下文件生成: