Computes Dense Optical Flow between each pixel of two images using pyramidal Lucas-Kanade method.
Function
CuviStatus opticalFlowPyrLKDense(const CuviImage& previous,
const CuviImage& next,
Cuvi32f* flowX
Cuvi32f* flowY,
const CuviTrackingCriteria criteria,
const CuviStream& stream = CuviStream());
|
Parameters
Name
|
Type
|
Description
|
previous
|
CuviImage&
|
The first image whose features are to be tracked
|
next
|
CuviImage&
|
Second image, in which to look for features of first image
|
flowX
|
Cuvi32f*
|
Horizontal optical flow
|
flowY
|
Cuvi32f*
|
Vertical optical flow
|
criteria
|
const CuviFeaturesCriteria
|
A structure containing various parameters that affect optical flow calculation
|
stream
|
const CuviStream&
|
GPU stream ID for execution
|
|
Image Type Support
Input
|
Output
|
2x 8uC1
|
2x Cuvi32f*
|
|
Samples
First Input Image (8-bit)
Second Input Image (8-bit)
Optical Flow Magnitude
Flow of selected points
Code Example
//Create two 8-bit Grays-scale CuviImage objects
CuviImage gimg1 = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);
CuviImage gimg2 = cuvi::io::loadImage(path,CUVI_LOAD_IMAGE_GRAYSCALE);
Cuvi32f* flowX = new Cuvi32f[gimg1.width() * gimg1.height()];
Cuvi32f* flowY = new Cuvi32f[gimg1.width() * gimg1.height()];
//tracking criteria
CuviTrackingCriteria tc;
//Compute optical flow between first frame and second frame
cuvi::computerVision::opticalFlowPyrLKDense(gimg1,gimg2,flowX,flowY,tc);
|