{
const Mat &cur = at(idx, motions);
Mat res = Mat::zeros(cur.size(), cur.type());
- for (int i = -radius_; i <= radius_; ++i)
- res += weight_[radius_ + i] * getMotion(idx, idx + i, motions);
- return res;
+ float sum = 0.f;
+ for (int i = std::max(idx - radius_, 0); i <= idx + radius_; ++i)
+ {
+ res += weight_[radius_ + i - idx] * getMotion(idx, i, motions);
+ sum += weight_[radius_ + i - idx];
+ }
+ return res / sum;
}
} // namespace videostab
Ptr<Stabilizer> stabilizer;
double outputFps;
string outputPath;
+bool quietMode;
void run();
void printHelp();
writer.open(outputPath, CV_FOURCC('X','V','I','D'), outputFps, stabilizedFrame.size());
writer << stabilizedFrame;
}
- imshow("stabilizedFrame", stabilizedFrame);
- char key = static_cast<char>(waitKey(3));
- if (key == 27)
- break;
+ if (!quietMode)
+ {
+ imshow("stabilizedFrame", stabilizedFrame);
+ char key = static_cast<char>(waitKey(3));
+ if (key == 27)
+ break;
+ }
}
cout << "\nfinished\n";
" Set output file path explicitely. The default is stabilized.avi.\n"
" --fps=<int_number>\n"
" Set output video FPS explicitely. By default the source FPS is used.\n"
+ " -q, --quiet\n"
+ " Don't show output video frames.\n"
" -h, --help\n"
" Print help.\n"
"\n";
"{ | color-inpaint | | }"
"{ o | output | stabilized.avi | }"
"{ | fps | | }"
+ "{ q | quiet | false | }"
"{ h | help | false | }";
CommandLineParser cmd(argc, argv, keys);
if (!cmd.get<string>("fps").empty())
outputFps = cmd.get<double>("fps");
+ quietMode = cmd.get<bool>("quiet");
+
// run video processing
run();
}