Commit 63584bc4 authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

Merge pull request #9444 from hrnr:akaze_tutorial

parents f7df5dd3 f6deaf5f
...@@ -62,8 +62,11 @@ void Tracker::setFirstFrame(const Mat frame, vector<Point2f> bb, string title, S ...@@ -62,8 +62,11 @@ void Tracker::setFirstFrame(const Mat frame, vector<Point2f> bb, string title, S
Mat Tracker::process(const Mat frame, Stats& stats) Mat Tracker::process(const Mat frame, Stats& stats)
{ {
TickMeter tm;
vector<KeyPoint> kp; vector<KeyPoint> kp;
Mat desc; Mat desc;
tm.start();
detector->detectAndCompute(frame, noArray(), kp, desc); detector->detectAndCompute(frame, noArray(), kp, desc);
stats.keypoints = (int)kp.size(); stats.keypoints = (int)kp.size();
...@@ -85,6 +88,8 @@ Mat Tracker::process(const Mat frame, Stats& stats) ...@@ -85,6 +88,8 @@ Mat Tracker::process(const Mat frame, Stats& stats)
homography = findHomography(Points(matched1), Points(matched2), homography = findHomography(Points(matched1), Points(matched2),
RANSAC, ransac_thresh, inlier_mask); RANSAC, ransac_thresh, inlier_mask);
} }
tm.stop();
stats.fps = 1. / tm.getTimeSec();
if(matched1.size() < 4 || homography.empty()) { if(matched1.size() < 4 || homography.empty()) {
Mat res; Mat res;
......
...@@ -7,11 +7,13 @@ struct Stats ...@@ -7,11 +7,13 @@ struct Stats
int inliers; int inliers;
double ratio; double ratio;
int keypoints; int keypoints;
double fps;
Stats() : matches(0), Stats() : matches(0),
inliers(0), inliers(0),
ratio(0), ratio(0),
keypoints(0) keypoints(0),
fps(0.)
{} {}
Stats& operator+=(const Stats& op) { Stats& operator+=(const Stats& op) {
...@@ -19,6 +21,7 @@ struct Stats ...@@ -19,6 +21,7 @@ struct Stats
inliers += op.inliers; inliers += op.inliers;
ratio += op.ratio; ratio += op.ratio;
keypoints += op.keypoints; keypoints += op.keypoints;
fps += op.fps;
return *this; return *this;
} }
Stats& operator/=(int num) Stats& operator/=(int num)
...@@ -27,6 +30,7 @@ struct Stats ...@@ -27,6 +30,7 @@ struct Stats
inliers /= num; inliers /= num;
ratio /= num; ratio /= num;
keypoints /= num; keypoints /= num;
fps /= num;
return *this; return *this;
} }
}; };
......
...@@ -25,15 +25,17 @@ void drawBoundingBox(Mat image, vector<Point2f> bb) ...@@ -25,15 +25,17 @@ void drawBoundingBox(Mat image, vector<Point2f> bb)
void drawStatistics(Mat image, const Stats& stats) void drawStatistics(Mat image, const Stats& stats)
{ {
static const int font = FONT_HERSHEY_PLAIN; static const int font = FONT_HERSHEY_PLAIN;
stringstream str1, str2, str3; stringstream str1, str2, str3, str4;
str1 << "Matches: " << stats.matches; str1 << "Matches: " << stats.matches;
str2 << "Inliers: " << stats.inliers; str2 << "Inliers: " << stats.inliers;
str3 << "Inlier ratio: " << setprecision(2) << stats.ratio; str3 << "Inlier ratio: " << setprecision(2) << stats.ratio;
str4 << "FPS: " << std::fixed << setprecision(2) << stats.fps;
putText(image, str1.str(), Point(0, image.rows - 90), font, 2, Scalar::all(255), 3); putText(image, str1.str(), Point(0, image.rows - 120), font, 2, Scalar::all(255), 3);
putText(image, str2.str(), Point(0, image.rows - 60), font, 2, Scalar::all(255), 3); putText(image, str2.str(), Point(0, image.rows - 90), font, 2, Scalar::all(255), 3);
putText(image, str3.str(), Point(0, image.rows - 30), font, 2, Scalar::all(255), 3); putText(image, str3.str(), Point(0, image.rows - 60), font, 2, Scalar::all(255), 3);
putText(image, str4.str(), Point(0, image.rows - 30), font, 2, Scalar::all(255), 3);
} }
void printStatistics(string name, Stats stats) void printStatistics(string name, Stats stats)
...@@ -45,6 +47,7 @@ void printStatistics(string name, Stats stats) ...@@ -45,6 +47,7 @@ void printStatistics(string name, Stats stats)
cout << "Inliers " << stats.inliers << endl; cout << "Inliers " << stats.inliers << endl;
cout << "Inlier ratio " << setprecision(2) << stats.ratio << endl; cout << "Inlier ratio " << setprecision(2) << stats.ratio << endl;
cout << "Keypoints " << stats.keypoints << endl; cout << "Keypoints " << stats.keypoints << endl;
cout << "FPS " << std::fixed << setprecision(2) << stats.fps << endl;
cout << endl; cout << endl;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment