" Blending strength from [0,100] range. The default is 5.\n"
" --output <result_img>\n"
" The default is 'result.jpg'.\n"
- " --timelapse (as_is|crop) (range_width)\n"
- " Output warped images separately as frames of a time lapse movie, with 'fixed_' prepended to input file names.\n";
+ " --timelapse (as_is|crop) \n"
+ " Output warped images separately as frames of a time lapse movie, with 'fixed_' prepended to input file names.\n"
+ " --rangewidth <int>\n"
+ " uses range_width to limit number of images to match with.\n";
}
float blend_strength = 5;
string result_name = "result.jpg";
bool timelapse = false;
-int timelapse_range = 5;
+int range_width = -1;
static int parseCmdArgs(int argc, char** argv)
return -1;
}
i++;
-
- timelapse_range = atoi(argv[i + 1]);
+ }
+ else if (string(argv[i]) == "--rangewidth")
+ {
+ range_width = atoi(argv[i + 1]);
i++;
}
else if (string(argv[i]) == "--blend_strength")
t = getTickCount();
#endif
vector<MatchesInfo> pairwise_matches;
- if (!timelapse)
+ if (range_width==-1)
{
BestOf2NearestMatcher matcher(try_cuda, match_conf);
matcher(features, pairwise_matches);
}
else
{
- BestOf2NearestRangeMatcher matcher(timelapse_range, try_cuda, match_conf);
+ BestOf2NearestRangeMatcher matcher(range_width, try_cuda, match_conf);
matcher(features, pairwise_matches);
matcher.collectGarbage();
}
}
blender->prepare(corners, sizes);
}
- else if (!timelapser)
+ else if (!timelapser && timelapse)
{
- CV_Assert(timelapse);
timelapser = Timelapser::createDefault(timelapse_type);
timelapser->initialize(corners, sizes);
}
if (timelapse)
{
timelapser->process(img_warped_s, Mat::ones(img_warped_s.size(), CV_8UC1), corners[img_idx]);
-
- imwrite("fixed_" + img_names[img_idx], timelapser->getDst());
+ String fixedFileName;
+ size_t pos_s = String(img_names[img_idx]).find_last_of("/\\");
+ if (pos_s == String::npos)
+ {
+ fixedFileName = "fixed_" + img_names[img_idx];
+ }
+ else
+ {
+ fixedFileName = "fixed_" + String(img_names[img_idx]).substr(pos_s + 1, String(img_names[img_idx]).length() - pos_s);
+ }
+ imwrite(fixedFileName, timelapser->getDst());
}
else
{