From CUVI Wiki
Jump to: navigation, search

Computes Dense Optical Flow between each pixel of two images using pyramidal Lucas-Kanade method.


CuviStatus opticalFlowPyrLKDense(const CuviImage& previous,
                                 const CuviImage& next,
                                 Cuvi32f* flowX
                                 Cuvi32f* flowY,
                                 const CuviTrackingCriteria criteria,
                                 const CuviStream& stream = CuviStream());


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*


First Input Image (8-bit)
Second Input Image (8-bit)
Optical Flow Magnitude
Flow of selected points


//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