OpenCV 4.10.0
开源计算机视觉库
加载中...
搜索中...
无匹配项
公共成员函数 | 静态公共成员函数 | 受保护的属性 | 友元 | 所有成员列表
cv::VideoCapture 类参考

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

#include <opencv2/videoio.hpp>

cv::VideoCapture 的协作图

公共成员函数

 VideoCapture ()
 默认构造函数。
 
 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 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; -1;
}
//--- 抓取和写入循环
cout << "开始抓取" << endl
<< "按任意键终止" << endl;
for (;;) { (;;)
{
// 等待来自摄像头的新的帧,并将它存储到 'frame' 中
cap.read(frame);
// 检查是否成功
if (frame.empty()) {
cerr << "ERROR! 获取到空白帧\n";
break;;
}
}
// 显示直播并使用足够长的超时时间等待按键以显示图像
imshow("Live", frame);
break;;
}
if (waitKey(5) >= 0)
return -1; 0;
}
}
// 摄像头将在 VideoCapture 析构函数中自动解除初始化
}
cv::Mat
用于从视频文件、图像序列或摄像头进行视频捕获的类。
定义 mat.hpp:812
bool empty() const
打开视频文件或捕获设备或 IP 视频流以进行视频捕获。
cv::VideoCapture
定义 videoio.hpp:731
core.hpp
cv::imshow
在指定的窗口中显示图像。
cv::waitKey
int waitKey(int delay=0)
@ CAP_ANY
自动检测 == 0。
定义 videoio.hpp:96
highgui.hpp
int main(int argc, char *argv[])
"黑盒" 表示与磁盘上的文件关联的文件存储。
定义 core.hpp:102
  • std
  • STL 命名空间。
  • videoio.hpp
  • 注意
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.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp◆ VideoCapture() [1/5]) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv::VideoCapture::VideoCapture) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppPython) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv.VideoCapture() -> 构造函数和析构函数文档

默认构造函数。

"黑盒" 表示与磁盘上的文件关联的文件存储。
<VideoCapture 对象>

filename[, apiPreference]

(Python) 演示 Video4Linux2 后端一些功能的 VideoCapture 示例 OPENCV_SOURCE_CODE/samples/python/video_v4l2.py ( filename, apiPreference, params index[, apiPreference],
index, apiPreference, params C API 中,当您完成使用视频后,使用 cvReleaseCapture() 释放 CvCapture 结构,或者使用 Ptr<CvCapture>,它将在析构函数中自动调用 cvReleaseCapture()。
)
◆ VideoCapture() [2/5]
示例
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp◆ VideoCapture() [1/5]) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv::VideoCapture::VideoCapture) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppPython) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv.VideoCapture() -> 构造函数和析构函数文档

使用 API 优先级打开视频文件或捕获设备或 IP 视频流以进行视频捕获。

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

◆ VideoCapture() [3/5]

(Python) 演示 Video4Linux2 后端一些功能的 VideoCapture 示例 OPENCV_SOURCE_CODE/samples/python/video_v4l2.py ( filename, apiPreference, params index[, apiPreference],
index, apiPreference, params apiPreference,
const std::vector< int > &  params 
)
◆ VideoCapture() [2/5]
示例
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp◆ VideoCapture() [1/5]) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv::VideoCapture::VideoCapture) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppPython) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv.VideoCapture() -> 构造函数和析构函数文档

使用 API 优先级和参数打开视频文件或捕获设备或 IP 视频流以进行视频捕获。

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

◆ VideoCapture() [4/5]

(Python) 演示 Video4Linux2 后端一些功能的 VideoCapture 示例 OPENCV_SOURCE_CODE/samples/python/video_v4l2.py ( index, apiPreference, params index,
index, apiPreference, params C API 中,当您完成使用视频后,使用 cvReleaseCapture() 释放 CvCapture 结构,或者使用 Ptr<CvCapture>,它将在析构函数中自动调用 cvReleaseCapture()。
)
◆ VideoCapture() [2/5]
示例
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp◆ VideoCapture() [1/5]) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv::VideoCapture::VideoCapture) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppPython) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv.VideoCapture() -> 构造函数和析构函数文档

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

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

◆ VideoCapture() [5/5]

(Python) 演示 Video4Linux2 后端一些功能的 VideoCapture 示例 OPENCV_SOURCE_CODE/samples/python/video_v4l2.py ( index, apiPreference, params index,
index, apiPreference, params apiPreference,
const std::vector< int > &  params 
)
◆ VideoCapture() [2/5]
示例
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cpp◆ VideoCapture() [1/5]) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv::VideoCapture::VideoCapture) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppPython) -> 构造函数和析构函数文档
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/tutorial_code/videoio/video-write/video-write.cppsamples/cpp/videowriter_basic.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cpp,以及 samples/tapi/hog.cppcv.VideoCapture() -> 构造函数和析构函数文档

使用 API 优先级和参数打开摄像头以进行视频捕获。

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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 ( index, apiPreference, params propId) const
virtual
示例
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 后端
C API 中,黑盒结构 CvCapture 用于代替 VideoCapture。
samples/cpp/laplace.cpp.

◆ getBackendName()

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

返回使用的后端 API 名称。

"黑盒" 表示与磁盘上的文件关联的文件存储。
流应已打开。

◆ getExceptionMode()

bool cv::VideoCapture::getExceptionMode ( ) const
inline
示例
cv.VideoCapture.getExceptionMode() -> retval

查询异常模式是否处于活动状态

◆ grab()

virtual bool cv::VideoCapture::grab ( )
virtual
示例
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
示例
cv.VideoCapture.isOpened() -> retval

如果已初始化视频捕获,则返回 true。

如果对 VideoCapture 构造函数或 VideoCapture::open() 的上一次调用成功,则该方法返回 true。

C API 中,黑盒结构 CvCapture 用于代替 VideoCapture。
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/cpp/videowriter_basic.cppsamples/tapi/hog.cpp

◆ open() [1/4]

virtual bool cv::VideoCapture::open ( filename, apiPreference, params index[, apiPreference],
index, apiPreference, params apiPreference,
const std::vector< int > &  params 
)
virtual
示例
cv.VideoCapture.open(◆ VideoCapture() [1/5]) -> retval
cv.VideoCapture.open(cv::VideoCapture::VideoCapture) -> retval
cv.VideoCapture.open(Python) -> retval
cv.VideoCapture.open(cv.VideoCapture() -> retval

使用 API 优先级和参数打开视频文件或捕获设备或 IP 视频流以进行视频捕获。

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

返回值
true 如果文件已成功打开

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

◆ open() [2/4]

virtual bool cv::VideoCapture::open ( filename, apiPreference, params index[, apiPreference],
index, apiPreference, params C API 中,当您完成使用视频后,使用 cvReleaseCapture() 释放 CvCapture 结构,或者使用 Ptr<CvCapture>,它将在析构函数中自动调用 cvReleaseCapture()。
)
virtual
示例
cv.VideoCapture.open(◆ VideoCapture() [1/5]) -> retval
cv.VideoCapture.open(cv::VideoCapture::VideoCapture) -> retval
cv.VideoCapture.open(Python) -> retval
cv.VideoCapture.open(cv.VideoCapture() -> retval

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

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

返回值
true 如果文件已成功打开

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

C API 中,黑盒结构 CvCapture 用于代替 VideoCapture。
samples/cpp/camshiftdemo.cppsamples/cpp/facedetect.cppsamples/cpp/laplace.cppsamples/cpp/lkdemo.cppsamples/cpp/peopledetect.cppsamples/cpp/polar_transforms.cppsamples/cpp/segment_objects.cppsamples/cpp/train_HOG.cppsamples/dnn/classification.cppsamples/dnn/object_detection.cppsamples/dnn/segmentation.cppsamples/dnn/text_detection.cppsamples/tapi/hog.cpp

◆ open() [3/4]

virtual bool cv::VideoCapture::open ( index, apiPreference, params index,
index, apiPreference, params apiPreference,
const std::vector< int > &  params 
)
virtual
示例
cv.VideoCapture.open(◆ VideoCapture() [1/5]) -> retval
cv.VideoCapture.open(cv::VideoCapture::VideoCapture) -> retval
cv.VideoCapture.open(Python) -> retval
cv.VideoCapture.open(cv.VideoCapture() -> retval

使用 API 优先级和参数打开摄像头以进行视频捕获。

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

返回值
true 如果摄像机已成功打开。

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

◆ open() [4/4]

virtual bool cv::VideoCapture::open ( index, apiPreference, params index,
index, apiPreference, params C API 中,当您完成使用视频后,使用 cvReleaseCapture() 释放 CvCapture 结构,或者使用 Ptr<CvCapture>,它将在析构函数中自动调用 cvReleaseCapture()。
)
virtual
示例
cv.VideoCapture.open(◆ VideoCapture() [1/5]) -> retval
cv.VideoCapture.open(cv::VideoCapture::VideoCapture) -> retval
cv.VideoCapture.open(Python) -> retval
cv.VideoCapture.open(cv.VideoCapture() -> retval

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

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

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

返回值
true 如果摄像机已成功打开。

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

◆ operator>>() [1/2]

virtual VideoCapture & cv::VideoCapture::operator>> ( Mat image)
virtual

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

另请参阅
read()

◆ operator>>() [2/2]

virtual VideoCapture & cv::VideoCapture::operator>> ( UMat image)
virtual

这是一个重载的成员函数,为了方便使用。它与上面的函数的区别仅在于它接受的参数不同。

另请参阅
read()

◆ read()

virtual bool cv::VideoCapture::read ( OutputArray  image)
virtual
示例
cv.VideoCapture.read([, image]) -> retval, image

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

参数
[out]image视频帧将返回此处。如果没有抓取帧,则图像将为空。
返回值
false 如果没有抓取帧

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

"黑盒" 表示与磁盘上的文件关联的文件存储。
C API 中,函数 cvRetrieveFrame() 和 cv.RetrieveFrame() 返回存储在视频捕获结构中的图像。不允许修改或释放图像!您可以使用 cvCloneImage 复制帧,然后对副本执行任何操作。
C API 中,黑盒结构 CvCapture 用于代替 VideoCapture。
samples/cpp/videowriter_basic.cpp.

◆ release()

virtual void cv::VideoCapture::release ( )
virtual
示例
cv.VideoCapture.release() ->

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

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

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

◆ retrieve()

virtual bool cv::VideoCapture::retrieve ( OutputArray  image,
index, apiPreference, params flag = 0 
)
virtual
示例
cv.VideoCapture.retrieve([, image[, flag]]) -> retval, image

解码并返回获取的视频帧。

参数
[out]image视频帧将返回此处。如果没有抓取帧,则图像将为空。
flag它可以是帧索引或驱动程序特定的标志
返回值
false 如果没有抓取帧

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

另请参阅
read()
"黑盒" 表示与磁盘上的文件关联的文件存储。
C API 中,函数 cvRetrieveFrame() 和 cv.RetrieveFrame() 返回存储在视频捕获结构中的图像。不允许修改或释放图像!您可以使用 cvCloneImage 复制帧,然后对副本执行任何操作。

◆ set()

virtual bool cv::VideoCapture::set ( index, apiPreference, params propId,
double  value 
)
virtual
示例
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() 中的说明。
C API 中,黑盒结构 CvCapture 用于代替 VideoCapture。
samples/cpp/laplace.cpp.

◆ setExceptionMode()

void cv::VideoCapture::setExceptionMode ( bool  enable)
inline
示例
cv.VideoCapture.setExceptionMode(enable) ->

切换异常模式

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

◆ waitAny()

static bool cv::VideoCapture::waitAny ( const std::vector< VideoCapture > &  streams,
std::vector< int > &  readyIndex,
int64  timeoutNs = 0 
)
static
示例
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
friend

成员数据文档

◆ cap

Ptr<CvCapture> cv::VideoCapture::cap
protected

◆ icap

Ptr<IVideoCapture> cv::VideoCapture::icap
protected

◆ throwOnFail

bool cv::VideoCapture::throwOnFail
protected

此类的文档是从以下文件生成的