OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
cv::cuda::NvidiaOpticalFlow_2_0 类参考抽象类

使用 NVIDIA 光流硬件和光流 SDK 2.0 计算两幅图像之间光流向量的类。更多…

#include <opencv2/cudaoptflow.hpp>

cv::cuda::NvidiaOpticalFlow_2_0 的协作图

公共类型

枚举  NVIDIA_OF_HINT_VECTOR_GRID_SIZE {
  NV_OF_HINT_VECTOR_GRID_SIZE_UNDEFINED ,
  NV_OF_HINT_VECTOR_GRID_SIZE_1 = 1 ,
  NV_OF_HINT_VECTOR_GRID_SIZE_2 = 2 ,
  NV_OF_HINT_VECTOR_GRID_SIZE_4 = 4 ,
  NV_OF_HINT_VECTOR_GRID_SIZE_8 = 8 ,
  NV_OF_HINT_VECTOR_GRID_SIZE_MAX
}
 
枚举  NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE {
  NV_OF_OUTPUT_VECTOR_GRID_SIZE_UNDEFINED ,
  NV_OF_OUTPUT_VECTOR_GRID_SIZE_1 = 1 ,
  NV_OF_OUTPUT_VECTOR_GRID_SIZE_2 = 2 ,
  NV_OF_OUTPUT_VECTOR_GRID_SIZE_4 = 4 ,
  NV_OF_OUTPUT_VECTOR_GRID_SIZE_MAX
}
 
枚举  NVIDIA_OF_PERF_LEVEL {
  NV_OF_PERF_LEVEL_UNDEFINED ,
  NV_OF_PERF_LEVEL_SLOW = 5 ,
  NV_OF_PERF_LEVEL_MEDIUM = 10 ,
  NV_OF_PERF_LEVEL_FAST = 20 ,
  NV_OF_PERF_LEVEL_MAX
}
 

公共成员函数

virtual void convertToFloat (InputArray flow, InputOutputArray floatFlow)=0
 convertToFloat() 辅助函数将硬件生成的光流向量转换为浮点表示(每个 gridSize 一个光流向量)。gridSize 可以通过函数 getGridSize() 查询。
 
- 继承自 cv::cuda::NvidiaHWOpticalFlow 的公共成员函数
virtual void calc (InputArray inputImage, InputArray referenceImage, InputOutputArray flow, Stream &stream=Stream::Null(), InputArray hint=cv::noArray(), OutputArray cost=cv::noArray())=0
 使用 NVIDIA 光流 SDK 计算光流。
 
virtual void collectGarbage ()=0
 释放所有缓冲区、上下文和设备指针。
 
virtual int getGridSize () const =0
 返回根据硬件能力确定的输出缓冲区的网格大小。
 
- 继承自 cv::Algorithm 的公共成员函数
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除算法状态。
 
virtual bool empty () const
 如果 Algorithm 为空(例如,在开始时或读取失败后),则返回 true。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 从文件存储中读取算法参数。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 将算法参数存储到文件存储中。
 
void write (FileStorage &fs, const String &name) const
 

静态公共成员函数

static Ptr< NvidiaOpticalFlow_2_0create (cv::Size imageSize, cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_PERF_LEVEL perfPreset=cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_PERF_LEVEL_SLOW, cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE outputGridSize=cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_OUTPUT_VECTOR_GRID_SIZE_1, cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_HINT_VECTOR_GRID_SIZE hintGridSize=cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_HINT_VECTOR_GRID_SIZE_1, bool enableTemporalHints=false, bool enableExternalHints=false, bool enableCostBuffer=false, int gpuId=0, Stream &inputStream=Stream::Null(), Stream &outputStream=Stream::Null())
 实例化 NVIDIA 光流。
 
static Ptr< NvidiaOpticalFlow_2_0创建 (cv::Size imageSize, std::vector< Rect > roiData, cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_PERF_LEVEL perfPreset=cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_PERF_LEVEL_SLOW, cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE outputGridSize=cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_OUTPUT_VECTOR_GRID_SIZE_1, cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_HINT_VECTOR_GRID_SIZE hintGridSize=cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_HINT_VECTOR_GRID_SIZE_1, bool enableTemporalHints=false, bool enableExternalHints=false, bool enableCostBuffer=false, int gpuId=0, Stream &inputStream=Stream::Null(), Stream &outputStream=Stream::Null())
 使用ROI功能实例化NVIDIA光流。
 
- 从cv::Algorithm继承的静态公有成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件中加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点读取算法。
 

其他继承的成员

- 从cv::Algorithm继承的保护成员函数
void writeFormat (FileStorage &fs) const
 

详细描述

使用NVIDIA光流硬件和光流SDK 2.0计算两幅图像之间光流向量的类。

注意
  • 一个演示NVIDIA光流用法的示例程序可以在opencv_contrib_source_code/modules/cudaoptflow/samples/nvidia_optical_flow.cpp找到。
  • 一个比较NVIDIA光流与OpenCV中其他光流算法的精度和性能的示例程序可以在opencv_contrib_source_code/modules/cudaoptflow/samples/optical_flow.cpp找到。

成员枚举文档

◆ NVIDIA_OF_HINT_VECTOR_GRID_SIZE

支持的提示缓冲区网格大小。

枚举器
NV_OF_HINT_VECTOR_GRID_SIZE_UNDEFINED 
NV_OF_HINT_VECTOR_GRID_SIZE_1 

提示缓冲区网格大小为1x1。

NV_OF_HINT_VECTOR_GRID_SIZE_2 

提示缓冲区网格大小为2x2。

NV_OF_HINT_VECTOR_GRID_SIZE_4 

提示缓冲区网格大小为4x4。

NV_OF_HINT_VECTOR_GRID_SIZE_8 

提示缓冲区网格大小为8x8。

NV_OF_HINT_VECTOR_GRID_SIZE_MAX 

◆ NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE

支持的输出缓冲区网格大小。

枚举器
NV_OF_OUTPUT_VECTOR_GRID_SIZE_UNDEFINED 
NV_OF_OUTPUT_VECTOR_GRID_SIZE_1 

输出缓冲区网格大小为1x1

NV_OF_OUTPUT_VECTOR_GRID_SIZE_2 

输出缓冲区网格大小为2x2

NV_OF_OUTPUT_VECTOR_GRID_SIZE_4 

输出缓冲区网格大小为4x4

NV_OF_OUTPUT_VECTOR_GRID_SIZE_MAX 

◆ NVIDIA_OF_PERF_LEVEL

支持的光流性能等级。

枚举器
NV_OF_PERF_LEVEL_UNDEFINED 
NV_OF_PERF_LEVEL_SLOW 

慢速性能等级导致最低性能和最佳质量

NV_OF_PERF_LEVEL_MEDIUM 

中等性能等级导致较低性能和中等质量

NV_OF_PERF_LEVEL_FAST 

快速性能等级导致高性能和低质量

NV_OF_PERF_LEVEL_MAX 

成员函数文档

◆ convertToFloat()

virtual void cv::cuda::NvidiaOpticalFlow_2_0::convertToFloat ( InputArray flow,
InputOutputArray floatFlow )
纯虚函数

convertToFloat() 辅助函数将硬件生成的光流向量转换为浮点表示(每个 gridSize 一个光流向量)。gridSize 可以通过函数 getGridSize() 查询。

参数
flow包含由calc()生成的流向量的CV_16FC2类型缓冲区。
floatFlowCV_32FC2类型的缓冲区,包含浮点表示的流向量,每个流向量对应一个网格大小的像素,采用步长线性布局。

◆ create() [1/2]

static Ptr< NvidiaOpticalFlow_2_0 > cv::cuda::NvidiaOpticalFlow_2_0::create ( cv::Size imageSize,
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_PERF_LEVEL perfPreset = cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_PERF_LEVEL_SLOW,
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE outputGridSize = cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_OUTPUT_VECTOR_GRID_SIZE_1,
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_HINT_VECTOR_GRID_SIZE hintGridSize = cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_HINT_VECTOR_GRID_SIZE_1,
bool enableTemporalHints = false,
bool enableExternalHints = false,
bool enableCostBuffer = false,
int gpuId = 0,
& inputStream = Stream::Null(),
& outputStream = Stream::Null() )
静态

实例化 NVIDIA 光流。

参数
imageSize输入图像的像素大小。
性能预设可选参数。有关预设的详细信息,请参考NV OF SDK文档。默认为 NV_OF_PERF_LEVEL_SLOW。
输出网格大小可选参数。有关输出网格大小的详细信息,请参考NV OF SDK文档。默认为 NV_OF_OUTPUT_VECTOR_GRID_SIZE_1。
提示网格大小可选参数。有关提示网格大小的详细信息,请参考NV OF SDK文档。默认为 NV_OF_HINT_VECTOR_GRID_SIZE_1。
启用时间提示可选参数。启用时间提示的标志。设置为 true 时,硬件将使用先前对calc()的调用生成的流向量作为当前对calc()调用的内部提示。在计算连续视频帧之间的流向量时非常有用。默认为 false。
启用外部提示可选参数。启用将外部提示缓冲区传递给calc()的标志。默认为 false。
启用代价缓冲区可选参数。启用从calc()输出代价缓冲区的标志。默认为 false。
gpuId可选参数,用于选择应在其上计算光流的 GPU ID。在多 GPU 系统中很有用。默认为 0。
inputStream光流算法可以选择性地对输入缓冲区进行 cuda 预处理。输入 cuda 流可用于将 cuda 预处理任务与 OF 硬件引擎进行流水线处理和同步。如果未设置输入流,则 execute 函数将使用默认流,即 NULL 流;
outputStream光流算法可以选择性地对输出流向量进行 cuda 后处理。输出 cuda 流可用于将 cuda 后处理任务与 OF 硬件引擎进行流水线处理和同步。如果未设置输出流,则 execute 函数将使用默认流,即 NULL 流;

◆ create() [2/2]

static Ptr< NvidiaOpticalFlow_2_0 > cv::cuda::NvidiaOpticalFlow_2_0::create ( cv::Size imageSize,
std::vector< Rect > roiData,
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_PERF_LEVEL perfPreset = cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_PERF_LEVEL_SLOW,
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_OUTPUT_VECTOR_GRID_SIZE outputGridSize = cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_OUTPUT_VECTOR_GRID_SIZE_1,
cv::cuda::NvidiaOpticalFlow_2_0::NVIDIA_OF_HINT_VECTOR_GRID_SIZE hintGridSize = cv::cuda::NvidiaOpticalFlow_2_0::NV_OF_HINT_VECTOR_GRID_SIZE_1,
bool enableTemporalHints = false,
bool enableExternalHints = false,
bool enableCostBuffer = false,
int gpuId = 0,
& inputStream = Stream::Null(),
& outputStream = Stream::Null() )
静态

使用ROI功能实例化NVIDIA光流。

参数
imageSize输入图像的像素大小。
roiData指向 ROI 数据的指针。
性能预设可选参数。有关预设的详细信息,请参考NV OF SDK文档。默认为 NV_OF_PERF_LEVEL_SLOW。
输出网格大小可选参数。有关输出网格大小的详细信息,请参考NV OF SDK文档。默认为 NV_OF_OUTPUT_VECTOR_GRID_SIZE_1。
提示网格大小可选参数。有关提示网格大小的详细信息,请参考NV OF SDK文档。默认为 NV_OF_HINT_VECTOR_GRID_SIZE_1。
启用时间提示可选参数。启用时间提示的标志。设置为 true 时,硬件将使用先前对calc()的调用生成的流向量作为当前对calc()调用的内部提示。在计算连续视频帧之间的流向量时非常有用。默认为 false。
启用外部提示可选参数。启用将外部提示缓冲区传递给calc()的标志。默认为 false。
启用代价缓冲区可选参数。启用从calc()输出代价缓冲区的标志。默认为 false。
gpuId可选参数,用于选择应在其上计算光流的 GPU ID。在多 GPU 系统中很有用。默认为 0。
inputStream光流算法可以选择性地对输入缓冲区进行 cuda 预处理。输入 cuda 流可用于将 cuda 预处理任务与 OF 硬件引擎进行流水线处理和同步。如果未设置输入流,则 execute 函数将使用默认流,即 NULL 流;
outputStream光流算法可以选择性地对输出流向量进行 cuda 后处理。输出 cuda 流可用于将 cuda 后处理任务与 OF 硬件引擎进行流水线处理和同步。如果未设置输出流,则 execute 函数将使用默认流,即 NULL 流;

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