OpenCV 4.13.0
開源計算機視覺庫 (Open Source Computer Vision)
正在載入...
正在搜尋...
未找到匹配項
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
 convertToFloat() 輔助函式將硬體生成的光流向量轉換為浮點表示(每個 gridSize 1 個光流向量)。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 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_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_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())
 例項化具有 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 SDK 2.0 計算兩幅影像之間的光流向量。

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

成員列舉文件

◆ NVIDIA_OF_HINT_VECTOR_GRID_SIZE

支援的提示緩衝區網格大小。

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

支援的輸出緩衝區網格大小。

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

支援的光流效能級別。

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

成員函式說明

◆ convertToFloat()

virtual void cv::cuda::NvidiaOpticalFlow_2_0::convertToFloat ( InputArray flow,
InputOutputArray floatFlow )
純虛擬函式

convertToFloat() 輔助函式將硬體生成的光流向量轉換為浮點表示(每個 gridSize 1 個光流向量)。gridSize 可以透過函式 getGridSize() 查詢。

引數
flow型別為 CV_16FC2 的緩衝區,包含由 calc() 生成的光流向量。
floatFlow型別為 CV_32FC2 的緩衝區,包含浮點表示的光流向量,每個 gridSize 對應 1 個畫素的光流向量,採用 pitch-linear 佈局。

◆ 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 HW 引擎流水線化和同步。如果未設定輸入流,則執行函式將使用預設流(即 NULL 流);
outputStream光流演算法可以選擇性地在輸出光流向量上進行 cuda 後處理。輸出 cuda 流可用於將 cuda 後處理任務與 OF HW 引擎流水線化和同步。如果未設定輸出流,則執行函式將使用預設流(即 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 HW 引擎流水線化和同步。如果未設定輸入流,則執行函式將使用預設流(即 NULL 流);
outputStream光流演算法可以選擇性地在輸出光流向量上進行 cuda 後處理。輸出 cuda 流可用於將 cuda 後處理任務與 OF HW 引擎流水線化和同步。如果未設定輸出流,則執行函式將使用預設流(即 NULL 流);

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