|
|
|
@ -152,11 +152,16 @@ void getFlowField(const Mat& u, const Mat& v, Mat& flowField) |
|
|
|
|
int main(int argc, const char* argv[]) |
|
|
|
|
{ |
|
|
|
|
const char* keys = |
|
|
|
|
"{ h | help | false | print help message }" |
|
|
|
|
"{ l | left | | specify left image }" |
|
|
|
|
"{ r | right | | specify right image }" |
|
|
|
|
"{ g | gray | false | use grayscale sources [PyrLK Sparse] }" |
|
|
|
|
"{ p | points | 4000 | specify points count [GoodFeatureToTrack] }"; |
|
|
|
|
"{ h | help | false | print help message }" |
|
|
|
|
"{ l | left | | specify left image }" |
|
|
|
|
"{ r | right | | specify right image }" |
|
|
|
|
"{ gray | gray | false | use grayscale sources [PyrLK Sparse] }" |
|
|
|
|
"{ win_size | win_size | 21 | specify windows size [PyrLK] }" |
|
|
|
|
"{ max_level | max_level | 3 | specify max level [PyrLK] }" |
|
|
|
|
"{ iters | iters | 30 | specify iterations count [PyrLK] }" |
|
|
|
|
"{ deriv_lambda | deriv_lambda | 0.5 | specify deriv lambda [PyrLK] }" |
|
|
|
|
"{ points | points | 4000 | specify points count [GoodFeatureToTrack] }" |
|
|
|
|
"{ min_dist | min_dist | 0 | specify minimal distance between points [GoodFeatureToTrack] }"; |
|
|
|
|
|
|
|
|
|
CommandLineParser cmd(argc, argv, keys); |
|
|
|
|
|
|
|
|
@ -178,7 +183,12 @@ int main(int argc, const char* argv[]) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool useGray = cmd.get<bool>("gray"); |
|
|
|
|
int winSize = cmd.get<int>("win_size"); |
|
|
|
|
int maxLevel = cmd.get<int>("max_level"); |
|
|
|
|
int iters = cmd.get<int>("iters"); |
|
|
|
|
double derivLambda = cmd.get<double>("deriv_lambda"); |
|
|
|
|
int points = cmd.get<int>("points"); |
|
|
|
|
double minDist = cmd.get<double>("min_dist"); |
|
|
|
|
|
|
|
|
|
Mat frame0 = imread(fname0); |
|
|
|
|
Mat frame1 = imread(fname1); |
|
|
|
@ -210,7 +220,7 @@ int main(int argc, const char* argv[]) |
|
|
|
|
|
|
|
|
|
// goodFeaturesToTrack
|
|
|
|
|
|
|
|
|
|
GoodFeaturesToTrackDetector_GPU detector(points, 0.01, 0.0); |
|
|
|
|
GoodFeaturesToTrackDetector_GPU detector(points, 0.01, minDist); |
|
|
|
|
|
|
|
|
|
GpuMat d_frame0Gray(frame0Gray); |
|
|
|
|
GpuMat d_prevPts; |
|
|
|
@ -221,6 +231,12 @@ int main(int argc, const char* argv[]) |
|
|
|
|
|
|
|
|
|
PyrLKOpticalFlow d_pyrLK; |
|
|
|
|
|
|
|
|
|
d_pyrLK.winSize.width = winSize; |
|
|
|
|
d_pyrLK.winSize.height = winSize; |
|
|
|
|
d_pyrLK.maxLevel = maxLevel; |
|
|
|
|
d_pyrLK.iters = iters; |
|
|
|
|
d_pyrLK.derivLambda = derivLambda; |
|
|
|
|
|
|
|
|
|
GpuMat d_frame0(frame0); |
|
|
|
|
GpuMat d_frame1(frame1); |
|
|
|
|
GpuMat d_frame1Gray(frame1Gray); |
|
|
|
|