OpenCV  4.10.0
开源计算机视觉
加载中...
搜索中...
无匹配
公共类型 | 公共成员函数 | 静态公共成员函数 | 所有成员列表
cv::cuda::NvidiaOpticalFlow_2_0 类参考抽象

用于使用NVIDIA光流硬件和Optical Flow SDK 2.0计算两张图像之间光流向量的类。 更多...

#include <opencv2/cudaoptflow.hpp>

cv::cuda::NvidiaOpticalFlow_2_0 的协作图

公共类型

enum  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
}
 
enum  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
}
 
enum  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
 getGridSize() 来查询。">convertToFloat() 辅助函数将硬件生成的光流向量转换为浮点表示(每个gridSize一个光流向量)。 gridSize可以通过函数 getGridSize() 来查询。
 
- 继承自 cv::cuda::NvidiaHWOpticalFlow 的公共成员函数
virtual void calc (InputArray inputImage, InputArray referenceImage, InputOutputArray flow, Stream &stream=Stream::Null(), cv::noArray(), OutputArray cost=cv::noArray())=0
 使用NVIDIA光流SDK计算光流。
 
virtual void collectGarbage ()=0
 释放所有缓冲区、上下文和设备指针。
 
virtual int getGridSize () const =0
 返回输出缓冲区的大小,大小与硬件能力相符。
 
- 继承自 cv::Algorithm 的公共成员函数
 算法 ()
 
虚拟 ~Algorithm ()
 
virtual void 清除 ()
 清除算法状态。
 
virtual bool empty () const
 如果Algorithm为空(例如,在最开始或读取失败之后),则返回true。
 
虚拟 String constgetDefaultName ()
 
virtual void read (const FileNode &fn)
 从文件存储读取算法参数。
 
virtual void constsave (const String &filename)
 
void voidwrite (const 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_0static 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, Stream &inputStream=Stream::Null(), Stream &outputStream=Stream::Null())
 实例化NVIDIA光流。
 
static Ptr< NvidiaOpticalFlow_2_0create (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())
 使用区域功能实例化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光学流硬件和Optical Flow SDK 2.0计算两幅图像之间的光流向量。

注意
  • 演示使用NVIDIA光学流的示例应用程序可在opencv_contrib_source_code/modules/cudaoptflow/samples/nvidia_optical_flow.cpp中找到
  • 与OpenCV中其他光学流算法比较NVIDIA Optical Flow的准确性和性能的示例应用程序可在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 
)
纯虚函数

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

参数
flowcalc() 生成光的 CV_16FC2 类型缓冲区。
floatFlow含浮点表示的光流向量的 CV_32FC2 类型缓冲区,每个像素对应一个 gridSize,按行距线性布局。

◆ 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,
Stream inputStream = Stream::Null(),
Stream outputStream = Stream::Null() 
)
static

实例化NVIDIA光流。

参数
imageSize输入图像像素大小。
perfPreset可选参数。请参阅 NV OF SDK 文档 了解有关预设的详细信息。默认为 NV_OF_PERF_LEVEL_SLOW。
outputGridSize可选参数。请参阅 NV OF SDK 文档 了解有关输出网格大小的详细信息。默认为 NV_OF_OUTPUT_VECTOR_GRID_SIZE_1。
hintGridSize可选参数。请参阅 NV OF SDK 文档 了解有关提示网格大小的详细信息。默认为 NV_OF_HINT_VECTOR_GRID_SIZE_1。
enableTemporalHints可选参数。标志以启用时间提示。当设置为 true 时,硬件使用先前调用 calc() 生成光矢量作为当前对 calc() 的内部提示。当计算相邻视频帧之间的光矢量时非常有用。默认为 false。
enableExternalHints可选参数。标志以启用将外部提示缓冲区传递给 calc()。默认为 false。
enableCostBuffer可选参数。标志以使能 calc() 的成本缓冲区输出。默认为 false。
gpuId可选参数,用于选择应计算光流的 GPU ID。在多 GPU 系统中很有用。默认为 0。
inputStream光流算法可能涉及对输入缓冲区的 cuda 预处理。可以使用输入 cuda 流将 cuda 预处理任务与 OF 硬件引引擎联调和同步。如果未设置输入流,则执行函数将使用默认流,即 NULL 流;
outputStream光流算法可能涉及对输出光矢量的 cuda 后处理。可以使用输出 cuda 流将 cuda 后处理任务与 OF 硬件引引擎联调和同步。如果未设置输出流,则执行函数将使用默认流,即 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,
Stream inputStream = Stream::Null(),
Stream outputStream = Stream::Null() 
)
static

使用区域功能实例化NVIDIA光学流。

参数
imageSize输入图像像素大小。
roiDataROI 数据指针。
perfPreset可选参数。请参阅 NV OF SDK 文档 了解有关预设的详细信息。默认为 NV_OF_PERF_LEVEL_SLOW。
outputGridSize可选参数。请参阅 NV OF SDK 文档 了解有关输出网格大小的详细信息。默认为 NV_OF_OUTPUT_VECTOR_GRID_SIZE_1。
hintGridSize可选参数。请参阅 NV OF SDK 文档 了解有关提示网格大小的详细信息。默认为 NV_OF_HINT_VECTOR_GRID_SIZE_1。
enableTemporalHints可选参数。标志以启用时间提示。当设置为 true 时,硬件使用先前调用 calc() 生成光矢量作为当前对 calc() 的内部提示。当计算相邻视频帧之间的光矢量时非常有用。默认为 false。
enableExternalHints可选参数。标志以启用将外部提示缓冲区传递给 calc()。默认为 false。
enableCostBuffer可选参数。标志以使能 calc() 的成本缓冲区输出。默认为 false。
gpuId可选参数,用于选择应计算光流的 GPU ID。在多 GPU 系统中很有用。默认为 0。
inputStream光流算法可能涉及对输入缓冲区的 cuda 预处理。可以使用输入 cuda 流将 cuda 预处理任务与 OF 硬件引引擎联调和同步。如果未设置输入流,则执行函数将使用默认流,即 NULL 流;
outputStream光流算法可能涉及对输出光矢量的 cuda 后处理。可以使用输出 cuda 流将 cuda 后处理任务与 OF 硬件引引擎联调和同步。如果未设置输出流,则执行函数将使用默认流,即 NULL 流;

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