OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
cv::cuda::NvidiaOpticalFlow_1_0 類參考抽象

使用 NVIDIA 光流硬體和光流 SDK 1.0 計算兩幅影像之間的光流向量的類。更多...

#include <opencv2/cudaoptflow.hpp>

cv::cuda::NvidiaOpticalFlow_1_0 的協作圖

公開型別

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 upSampler (InputArray flow, cv::Size imageSize, int gridSize, InputOutputArray upsampledFlow)=0
 NVIDIA 光流硬體以 gridSize 的粒度生成光流向量,可以透過函式 getGridSize() 查詢。Upsampler() 輔助函式使用最近鄰上取樣方法將硬體生成的光流向量轉換為密集表示(每個畫素一個光流向量)。
 
- 繼承自 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 Optical Flow 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_1_0create (cv::Size imageSize, cv::cuda::NvidiaOpticalFlow_1_0::NVIDIA_OF_PERF_LEVEL perfPreset=cv::cuda::NvidiaOpticalFlow_1_0::NV_OF_PERF_LEVEL_SLOW, 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 光流硬體和光流 SDK 1.0 計算兩幅影像之間的光流向量的類。

注意
  • 演示 NVIDIA 光流用法的示例應用程式可以在 opencv_contrib_source_code/modules/cudaoptflow/samples/nvidia_optical_flow.cpp 中找到
  • 一個比較 OpenCV 中 NVIDIA 光流與其他光流演算法的準確性和效能的示例應用程式可以在 opencv_contrib_source_code/modules/cudaoptflow/samples/optical_flow.cpp 中找到

成員列舉文件

◆ NVIDIA_OF_PERF_LEVEL

支援的光流效能級別。

列舉值 (Enumerator)
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 

成員函式說明

◆ create()

static Ptr< NvidiaOpticalFlow_1_0 > cv::cuda::NvidiaOpticalFlow_1_0::create ( cv::Size imageSize,
cv::cuda::NvidiaOpticalFlow_1_0::NVIDIA_OF_PERF_LEVEL perfPreset = cv::cuda::NvidiaOpticalFlow_1_0::NV_OF_PERF_LEVEL_SLOW,
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。
enableTemporalHints可選引數。啟用時間提示的標誌。當設定為 true 時,硬體會將先前呼叫 calc() 時生成的光流向量用作當前呼叫 calc() 的內部提示。在計算連續影片幀之間的光流向量時很有用。預設為 false。
enableExternalHints可選引數。啟用將外部提示緩衝區傳遞給 calc() 的標誌。預設為 false。
enableCostBuffer可選引數。啟用從 calc() 輸出成本緩衝區的標誌。預設為 false。
gpuId用於選擇應在其上計算光流的 GPU ID 的可選引數。在多 GPU 系統中很有用。預設為 0。
inputStream光流演算法可能涉及對輸入緩衝區的 CUDA 預處理。輸入 CUDA 流可用於將 CUDA 預處理任務與 OF HW 引擎進行流水線處理和同步。如果未設定輸入流,則執行函式將使用預設流,即 NULL 流;
outputStream光流演算法可能涉及對輸出光流向量的 CUDA 後處理。輸出 CUDA 流可用於將 CUDA 後處理任務與 OF HW 引擎進行流水線處理和同步。如果未設定輸出流,則執行函式將使用預設流,即 NULL 流;

◆ upSampler()

virtual void cv::cuda::NvidiaOpticalFlow_1_0::upSampler ( InputArray flow,
cv::Size imageSize,
int gridSize,
InputOutputArray upsampledFlow )
純虛擬函式

NVIDIA 光流硬體以 gridSize 的粒度生成光流向量,可以透過函式 getGridSize() 查詢。Upsampler() 輔助函式使用最近鄰上取樣方法將硬體生成的光流向量轉換為密集表示(每個畫素一個光流向量)。

引數
flow型別為 CV_16FC2 的緩衝區,包含由 calc() 生成的光流向量。
imageSize生成這些光流向量的輸入影像的大小(以畫素為單位)。
gridSizecalc() 函式返回的光流向量的粒度。可以使用 getGridSize() 查詢。
upsampledFlow型別為 CV_32FC2 的緩衝區,包含上取樣後的光流向量,每個畫素一個光流向量,採用行優先佈局。

該類的文件由以下檔案生成: