OpenCV 4.11.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 的视频编解码器 SDK,则可用。

解码支持取决于 GPU,有关详细信息,请参阅 Nvidia 视频编解码器 SDK 视频编码和解码 GPU 支持矩阵。

注意
  • 有关如何使用 VideoReader 接口的示例,请参见 opencv_source_code/samples/gpu/video_reader.cpp

构造函数和析构函数文档

◆ ~VideoReader()

virtual cv::cudacodec::VideoReader::~VideoReader ( )
内联虚函数

成员函数文档

◆ 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_MSECcv::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_IDXcv::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())
纯虚函数

从视频源抓取下一帧。

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

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

当启用 rawMode 时,此函数的主要用途是读取编码和解码的视频数据。启用 rawMode 后,可以在调用 retrieve() 之后调用 grab() 以检索自上次调用 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编码帧的亮度分量的直方图,参见注释。
stream异步版本的流。
返回值
如果没有抓取帧,则为false

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

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

◆ nextFrame() [2/2]

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

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

参数
[输出]frame视频帧。
stream异步版本的流。
返回值
如果没有抓取帧,则为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。
返回值
除非 colorFormat 不受支持,否则为true

◆ 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_IDXcv::cudacodec::VideoReaderProps::PROP_EXTRA_DATA_INDEX,……)。
propertyVal属性的值。
返回值
如果属性已设置,则为true

◆ setVideoReaderProps()

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

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