Class cv::cuda::NvidiaHWOpticalFlow#

Base Interface for optical flow algorithms using NVIDIA Optical Flow SDK.

Collaboration diagram for cv::cuda::NvidiaHWOpticalFlow:

Public Member Functions#

Public Member Functions inherited from cv::Algorithm

Return

Name

Description

Algorithm()

~Algorithm()

void

clear()

Clears the algorithm state.

bool

empty()

Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read.

String

getDefaultName()

void

read(const FileNode & fn)

Reads algorithm parameters from a file storage.

void

save(const String & filename)

void

write(
    const Ptr< FileStorage > & fs,
    const String & name = String() )

void

write(FileStorage & fs)

Stores algorithm parameters in a file storage.

void

write(
    FileStorage & fs,
    const String & name )

Static Public Member Functions#

Static Public Member Functions inherited from cv::Algorithm

Return

Name

Description

static Ptr< _Tp >

load(
    const String & filename,
    const String & objname = String() )

Loads algorithm from the file.

static Ptr< _Tp >

loadFromString(
    const String & strModel,
    const String & objname = String() )

Loads algorithm from a String.

static Ptr< _Tp >

read(const FileNode & fn)

Reads algorithm from the file node.

Additional Inherited Members#

Protected Member Functions inherited from cv::Algorithm

Return

Name

Description

void

writeFormat(FileStorage & fs)

Detailed Description#

Base Interface for optical flow algorithms using NVIDIA Optical Flow SDK.

Member Function Documentation#

calc()#

void cv::cuda::NvidiaHWOpticalFlow::calc(
InputArray inputImage,
InputArray referenceImage,
InputOutputArray flow,
Stream & stream = Stream::Null(),
InputArray hint = cv::noArray(),
OutputArray cost = cv::noArray() )

Calculates Optical Flow using NVIDIA Optical Flow SDK.

NVIDIA GPUs starting with Turing contain a dedicated hardware accelerator for computing optical flow vectors between pairs of images. The optical flow hardware accelerator generates block-based optical flow vectors. The size of the block depends on hardware in use, and can be queried using the function getGridSize(). The block-based flow vectors generated by the hardware can be converted to dense representation (i.e. per-pixel flow vectors) using upSampler() helper function, if needed. The flow vectors are stored in CV_16SC2 format with x and y components of each flow vector in 16-bit signed fixed point representation S10.5.

Note

  • Client must use critical sections around each calc() function if calling it from multiple threads.

Parameters

  • inputImage — Input image.

  • referenceImage — Reference image of the same size and the same type as input image.

  • flow — A buffer consisting of inputImage.Size() / getGridSize() flow vectors in CV_16SC2 format.

  • stream — It is highly recommended that CUDA streams for pre and post processing of optical flow vectors should be set once per session in create() function as a part of optical flow session creation. This parameter is left here for backward compatibility and may be removed in the future. Default value is NULL stream;

  • hint — Hint buffer if client provides external hints. Must have same size as flow buffer. Caller can provide flow vectors as hints for optical flow calculation.

  • cost — Cost buffer contains numbers indicating the confidence associated with each of the generated flow vectors. Higher the cost, lower the confidence. Cost buffer is of type CV_32SC1.

collectGarbage()#

void cv::cuda::NvidiaHWOpticalFlow::collectGarbage()

Releases all buffers, contexts and device pointers.

getGridSize()#

int cv::cuda::NvidiaHWOpticalFlow::getGridSize()

Returns grid size of output buffer as per the hardware’s capability.

Source file#

The documentation for this class was generated from the following file: