OpenCV 4.12.0
开源计算机视觉
加载中...
搜索中...
无匹配项
cv::cudacodec::VideoReader 类参考抽象

视频读取器接口,请参阅 createVideoReader()更多...

#include <opencv2/cudacodec.hpp>

cv::cudacodec::VideoReader 的协作图

公共成员函数

virtual ~VideoReader ()
 
virtual FormatInfo format () const =0
 返回视频文件格式信息。
 
virtual bool get (const int propertyId, double &propertyVal) const =0
 检索 VideoSource 使用的指定属性。
 
virtual bool get (const VideoReaderProps propertyId, double &propertyVal) const =0
 返回指定的 VideoReader 属性。
 
virtual bool getVideoReaderProps (const VideoReaderProps propertyId, double &propertyValOut, double propertyValIn=0) const =0
 
virtual bool grab (cuda::Stream &stream=cuda::Stream::Null())=0
 从视频源中抓取下一帧。
 
virtual bool nextFrame (cuda::GpuMat &frame, cuda::GpuMat &histogram, cuda::Stream &stream=cuda::Stream::Null())=0
 抓取、解码并返回下一个视频帧和帧亮度直方图。
 
virtual bool nextFrame (cuda::GpuMat &frame, cuda::Stream &stream=cuda::Stream::Null())=0
 抓取、解码并返回下一个视频帧。
 
bool retrieve (cuda::GpuMat &frame) const
 返回下一个视频帧。
 
bool retrieve (Mat &frame, const size_t idx) const
 返回之前抓取的编码视频数据。
 
virtual bool retrieve (OutputArray frame, const size_t idx=static_cast< size_t >(VideoReaderProps::PROP_DECODED_FRAME_IDX)) const =0
 返回之前抓取的视频数据。
 
virtual bool set (const ColorFormat colorFormat, const BitDepth bitDepth=BitDepth::UNCHANGED, const bool planar=false)=0
 设置由 nextFrame()/retrieve() 返回的帧所需的 ColorFormat。
 
virtual bool set (const VideoReaderProps propertyId, const double propertyVal)=0
 VideoReader 中设置属性。
 
bool setVideoReaderProps (const VideoReaderProps propertyId, double propertyVal)
 

详细描述

视频读取器接口,请参阅 createVideoReader()

如果安装了 Nvidia 的 Video Codec SDK,则可用。

解码支持取决于 GPU,详情请参阅 Nvidia Video Codec SDK 视频编码和解码 GPU 支持矩阵。

注意
  • 使用 VideoReader 接口的示例可在 opencv_source_code/samples/gpu/video_reader.cpp 中找到。

构造函数 & 析构函数文档

◆ ~VideoReader()

virtual cv::cudacodec::VideoReader::~VideoReader ( )
inlinevirtual

成员函数文档

◆ format()

virtual FormatInfo cv::cudacodec::VideoReader::format ( ) const
纯虚函数

返回视频文件格式信息。

◆ get() [1/2]

virtual bool cv::cudacodec::VideoReader::get ( const int propertyId,
double & propertyVal ) const
纯虚函数

检索 VideoSource 使用的指定属性。

参数
propertyId来自 cv::VideoCaptureProperties (例如 cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...) 或 视频 I/O API 后端的附加标志 中的属性标识符。
propertyVal指定属性的值。
返回
true,除非属性未设置或不支持。

◆ get() [2/2]

virtual bool cv::cudacodec::VideoReader::get ( const VideoReaderProps propertyId,
double & propertyVal ) const
纯虚函数

返回指定的 VideoReader 属性。

参数
propertyId来自 cv::cudacodec::VideoReaderProps 的属性标识符 (例如 cv::cudacodec::VideoReaderProps::PROP_DECODED_FRAME_IDX, cv::cudacodec::VideoReaderProps::PROP_EXTRA_DATA_INDEX, ...)。
propertyVal
返回
true,除非属性不支持。

◆ getVideoReaderProps()

virtual bool cv::cudacodec::VideoReader::getVideoReaderProps ( const VideoReaderProps propertyId,
double & propertyValOut,
double propertyValIn = 0 ) const
纯虚函数

◆ grab()

virtual bool cv::cudacodec::VideoReader::grab ( cuda::Stream & stream = cuda::Stream::Null())
纯虚函数

从视频源中抓取下一帧。

参数
用于异步版本的流。
返回
成功时为 true (非零)。

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

该函数的主要用途是在启用 rawMode 时读取编码和解码后的视频数据。启用 rawMode 后,可在调用 grab() 之后调用 retrieve(),以检索自上次调用 grab() 或创建 VideoReader 以来与当前视频源关联的所有数据。

◆ nextFrame() [1/2]

virtual bool cv::cudacodec::VideoReader::nextFrame ( cuda::GpuMat & frame,
cuda::GpuMat & histogram,
cuda::Stream & stream = cuda::Stream::Null() )
纯虚函数

抓取、解码并返回下一个视频帧和帧亮度直方图。

参数
[输出]frame视频帧。
[输出]histogram编码帧亮度分量的直方图,参见注释。
用于异步版本的流。
返回
如果未抓取任何帧,则为 false

如果没有抓取任何帧(视频文件中没有更多帧),则方法返回 false。如果发生错误,方法将抛出 Exception

注意
直方图数据由 NVDEC 在解码过程中收集,因此性能开销为零。NVDEC 仅计算解码输出的亮度分量的直方图数据,而不是在后处理帧(即应用缩放、裁剪等)上计算。如果源使用有限的亮度值范围编码(FormatInfo::videoFullRangeFlag == false),则直方图 bin 值将对应于此有限的范围值,并且需要映射以包含与 cuda::calcHist() 相同的输出。如果需要,可以使用 MapHist() 实用函数在主机上执行此映射。

◆ nextFrame() [2/2]

virtual bool cv::cudacodec::VideoReader::nextFrame ( cuda::GpuMat & frame,
cuda::Stream & stream = cuda::Stream::Null() )
纯虚函数

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

参数
[输出]frame视频帧。
用于异步版本的流。
返回
如果未抓取任何帧,则为 false

如果没有抓取任何帧(视频文件中没有更多帧),则方法返回 false。如果发生错误,方法将抛出 Exception

◆ retrieve() [1/3]

bool cv::cudacodec::VideoReader::retrieve ( cuda::GpuMat & frame) const
inline

返回下一个视频帧。

参数
[输出]frame视频帧。如果尚未调用 grab(),则此值将为空。
返回
如果未抓取任何帧,则为 false

该方法返回自上次调用 grab() 以来与当前视频源关联的数据。如果不存在数据,则该方法返回 false,并且函数返回空图像。

◆ retrieve() [2/3]

bool cv::cudacodec::VideoReader::retrieve ( Mat & frame,
const size_t idx ) const
inline

返回之前抓取的编码视频数据。

参数
[输出]frame编码视频数据。
idx确定图像内返回的数据。返回的数据可以是:
  • 如果可用,额外数据,idx = get(PROP_EXTRA_DATA_INDEX)。
  • 原始编码数据包。要检索包 i,idx = get(PROP_RAW_PACKAGES_BASE_INDEX) + i,其中 i < get(PROP_NUMBER_OF_RAW_PACKAGES_SINCE_LAST_GRAB)
返回
如果未抓取任何帧,则为 false

该方法返回自上次调用 grab() 或创建 VideoReader 以来与当前视频源关联的数据。如果不存在数据,则该方法返回 false,并且函数返回空图像。

◆ retrieve() [3/3]

virtual bool cv::cudacodec::VideoReader::retrieve ( OutputArray frame,
const size_t idx = static_cast< size_t >(VideoReaderProps::PROP_DECODED_FRAME_IDX) ) const
纯虚函数

返回之前抓取的视频数据。

参数
[输出]frame返回的数据,其取决于提供的 idx。
idx确定图像内返回的数据。返回的数据可以是:
  • 解码帧,idx = get(PROP_DECODED_FRAME_IDX)。
  • 如果可用,额外数据,idx = get(PROP_EXTRA_DATA_INDEX)。
  • 原始编码数据包。要检索包 i,idx = get(PROP_RAW_PACKAGES_BASE_INDEX) + i,其中 i < get(PROP_NUMBER_OF_RAW_PACKAGES_SINCE_LAST_GRAB)
返回
如果未抓取任何帧,则为 false

该方法返回自上次调用 grab() 或创建 VideoReader 以来与当前视频源关联的数据。如果不存在数据,则该方法返回 false,并且函数返回空图像。

◆ set() [1/2]

virtual bool cv::cudacodec::VideoReader::set ( const ColorFormat colorFormat,
const BitDepth bitDepth = BitDepth::UNCHANGED,
const bool planar = false )
纯虚函数

设置由 nextFrame()/retrieve() 返回的帧所需的 ColorFormat。

参数
colorFormatColorFormat 的值。
bitDepth请求的帧位深度。
planar平面颜色格式设置为 true,打包颜色格式设置为 false。
返回
true,除非 colorFormat 不支持。

◆ set() [2/2]

virtual bool cv::cudacodec::VideoReader::set ( const VideoReaderProps propertyId,
const double propertyVal )
纯虚函数

VideoReader 中设置属性。

参数
propertyId来自 cv::cudacodec::VideoReaderProps 的属性标识符 (例如 cv::cudacodec::VideoReaderProps::PROP_DECODED_FRAME_IDX, cv::cudacodec::VideoReaderProps::PROP_EXTRA_DATA_INDEX, ...)。
propertyVal属性的值。
返回
如果属性已设置,则为 true

◆ setVideoReaderProps()

bool cv::cudacodec::VideoReader::setVideoReaderProps ( const VideoReaderProps propertyId,
double propertyVal )
inline

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