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

用于使用 NVIDIA Optical Flow 硬件和 Optical Flow 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 (输入数组 flow, 输入输出数组 floatFlow)=0
 convertToFloat() 辅助函数将硬件生成的光流向量转换为浮点表示(每个网格大小对应 1 个光流向量)。gridSize 可以通过函数 getGridSize() 查询。
 
- 继承自 cv::cuda::NvidiaHWOpticalFlow 的公共成员函数
virtual void calc (输入数组 inputImage, 输入数组 referenceImage, 输入输出数组 flow, &stream=Stream::Null(), 输入数组 hint=cv::noArray(), 输出数组 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, &inputStream=Stream::Null(), &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, &inputStream=Stream::Null(), &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 Optical Flow 硬件和 Optical Flow SDK 2.0 计算两幅图像之间光流向量的类。

注意
  • 一个演示 NVIDIA Optical Flow 用法的示例应用程序可以在 opencv_contrib_source_code/modules/cudaoptflow/samples/nvidia_optical_flow.cpp 找到。
  • 一个比较 NVIDIA Optical Flow 与 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() 辅助函数将硬件生成的光流向量转换为浮点表示(每个网格大小对应 1 个光流向量)。gridSize 可以通过函数 getGridSize() 查询。

参数
flow类型为 CV_16FC2 的缓冲区,包含由 calc() 生成的光流向量。
floatFlow类型为 CV_32FC2 的缓冲区,包含浮点表示的光流向量,每个光流向量对应每个 gridSize 的 1 像素,采用线性间距布局。

◆ create() [1/2]

实例化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

实例化具有 ROI 功能的 NVIDIA 光流。

参数
imageSize输入图像的像素尺寸。
roiData指向 ROI 数据的指针。
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 流);

此类的文档生成自以下文件