|
|
| (3 intermediate revisions by the same user not shown) |
| Line 15: |
Line 15: |
|
| |
|
| ===Parameters=== | | ===Parameters=== |
| | {| |
| | |style="font-size:75%;"| |
| {|class="wikitable" | | {|class="wikitable" |
| |- | | |- |
| Line 44: |
Line 46: |
| | const CuviStream& | | | const CuviStream& |
| | GPU stream ID for execution | | | GPU stream ID for execution |
| | | |} |
| |} | | |} |
|
| |
|
| | | ====Image Type Support==== |
| ===Image Type Support=== | | {| |
| | | |style="font-size:75%;"| |
| {| class="wikitable" | | {| class="wikitable" |
| |- | | |- |
| Line 58: |
Line 60: |
| | 2x Cuvi32f* | | | 2x Cuvi32f* |
| |} | | |} |
|
| |
|
| |
|
| |
| ===Samples===
| |
| {|
| |
| |-
| |
| |[[File:OF_frame1.png|frame|First Input Image (8-bit)]]
| |
| |[[File:OF_frame2.png|frame|Second Input Image (8-bit)]]
| |
| |-
| |
| |[[File:OF_flowMag.png|frame| Optical Flow Magnitude]]
| |
| |[[File:OF_sparseFlow.png|frame| Flow of selected points]]
| |
| |} | | |} |
|
| |
|
| | ====Samples==== |
| | [[File:OF_frame1.png|none|frame|First Input Image (8-bit)]] |
| | <br/> |
| | [[File:OF_frame2.png|none|frame|Second Input Image (8-bit)]] |
| | <br/> |
| | [[File:OF_flowMag.png|none|frame| Optical Flow Magnitude]] |
| | <br/> |
| | [[File:OF_sparseFlow.png|none|frame| Flow of selected points]] |
| | <br/> |
|
| |
|
| | | ====Code Example==== |
| ===Example=== | |
| {| | | {| |
| |style="font-size:150%;"| | | |style="font-size:100%;"| |
| <syntaxhighlight lang="cpp"> | | <syntaxhighlight lang="cpp"> |
|
| |
|
Latest revision as of 14:18, 18 October 2022
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);
|