mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #9444 from hrnr:akaze_tutorial
This commit is contained in:
commit
63584bc4d0
@ -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)
|
|||||||
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
|
|||||||
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
|
|||||||
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
|
|||||||
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)
|
|||||||
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)
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user