38 #include <opencv2/core/core.hpp>
39 #include <opencv2/features2d/features2d.hpp>
40 #include <opencv2/highgui/highgui.hpp>
43 #include "../matching/feature.h"
44 #include "../math/random_generator.h"
50 unsigned int radius,
unsigned int line_thickness) {
58 for (
const auto& feature : features) {
60 cv_feature.x = feature.u_;
61 cv_feature.y = feature.v_;
64 cv::circle(cv_image, cv_feature, radius, color, line_thickness);
72 const std::string& window_name,
unsigned int radius,
73 unsigned int line_thickness) {
83 cv::namedWindow(window_name.c_str(), CV_WINDOW_AUTOSIZE);
84 cv::imshow(window_name.c_str(), cv_copy);
90 const std::string& window_name,
91 unsigned int line_thickness) {
96 cv::Mat cv_image1, cv_image2;
97 image1.
ToCV(cv_image1);
98 image2.
ToCV(cv_image2);
101 cv::Mat combined_image;
102 cv::hconcat(cv_image1, cv_image2, combined_image);
105 for (
const auto& feature_match : feature_matches) {
107 feature1.x = feature_match.feature1_.u_;
108 feature1.y = feature_match.feature1_.v_;
111 feature2.x = feature_match.feature2_.u_;
112 feature2.y = feature_match.feature2_.v_;
113 feature2 += cv::Point(image2.
Width(), 0);
117 cv::line(combined_image, feature1, feature2, color, line_thickness);
120 cv::circle(combined_image, feature1, line_thickness * 3 , color,
122 cv::circle(combined_image, feature2, line_thickness * 3 , color,
127 cv::namedWindow(window_name.c_str(), CV_WINDOW_AUTOSIZE);
128 cv::imshow(window_name.c_str(), combined_image);
void DrawImageFeatures(const FeatureList &features, const Image &image, const std::string &window_name, unsigned int radius, unsigned int line_thickness)
void AnnotateFeatures(const FeatureList &features, Image &image, unsigned int radius, unsigned int line_thickness)
std::vector< Feature > FeatureList
void FromCV(const cv::Mat &in)
std::vector< FeatureMatch > FeatureMatchList
void DrawImageFeatureMatches(const Image &image1, const Image &image2, const FeatureMatchList &feature_matches, const std::string &window_name, unsigned int line_thickness)
void ToCV(cv::Mat &out) const
static unsigned long Seed()