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 流);

此類的文件生成自以下檔案