licornea_tools
cg_cors_viewer_v.cc
Go to the documentation of this file.
1 #include "../lib/args.h"
2 #include "../lib/opencv.h"
3 #include "../lib/intrinsics.h"
4 #include "../lib/dataset.h"
5 #include "../lib/misc.h"
6 #include "../lib/image_io.h"
7 #include "../lib/viewer.h"
9 #include "lib/feature_points.h"
10 #include <cstdlib>
11 #include <iostream>
12 #include <string>
13 
14 using namespace tlz;
15 
16 
17 int main(int argc, const char* argv[]) {
18  get_args(argc, argv, "dataset_parameters.json cors.json [dataset_group]");
19  dataset datas = dataset_arg();
21  std::string dataset_group_name = string_opt_arg(cors.dataset_group);
22 
23  dataset_group datag = datas.group(dataset_group_name);
24 
25  viewer view("Image Correspondences Viewer", datag.image_size_with_border(), true);
26  auto& x_slider = view.add_int_slider("X", datas.x_mid(), datas.x_min(), datas.x_max(), datas.x_step());
27  auto& y_slider = view.add_int_slider("Y", datas.y_mid(), datas.y_min(), datas.y_max(), datas.y_step());
28 
29 
30  view.update_callback = [&]() {
31  view_index idx(x_slider, y_slider);
32  if(! datas.valid(idx)) return;
33 
34  cv::Mat_<cv::Vec3b> img;
35  {
36  std::string image_filename = datag.view(idx).image_filename();
37  cv::Mat_<uchar> gray_img = cv::imread(image_filename, CV_LOAD_IMAGE_GRAYSCALE);
38  if(gray_img.empty()) {
39  gray_img = cv::Mat_<uchar>(datag.image_size_with_border());
40  gray_img.setTo(0);
41  }
42  cv::cvtColor(gray_img, img, CV_GRAY2BGR);
43  }
44  feature_points fpoints = feature_points_for_view(cors, idx);
45  img = visualize_feature_points(fpoints, img, datag.image_border());
46 
47  view.draw(cv::Point(0, 0), img);
48  };
49 
50  view.show_modal();
51 }
cv::Size image_size_with_border() const
Definition: dataset.cc:101
int x_step() const
Definition: dataset.cc:173
std::string image_filename() const
Definition: dataset.cc:64
border image_border() const
Definition: dataset.cc:96
int x_max() const
Definition: dataset.cc:169
int x_min() const
Definition: dataset.cc:165
Set of features, each on set of views.
dataset_view view(int x) const
Definition: dataset.cc:105
Points of different features, on one view.
int x_mid() const
Definition: dataset.cc:186
bool valid(view_index) const
Definition: dataset.cc:231
feature_points feature_points_for_view(const image_correspondences &cors, view_index idx, bool is_distorted)
dataset dataset_arg()
Definition: dataset.cc:297
int y_step() const
Definition: dataset.cc:206
image_correspondences image_correspondences_arg()
int y_max() const
Definition: dataset.cc:201
int_slider & add_int_slider(const std::string &caption, int default_val, int min_val, int max_val, int step=1)
Definition: viewer.cc:263
cv::Mat_< cv::Vec3b > visualize_feature_points(const feature_points &fpoints, const cv::Mat_< cv::Vec3b > &back_img, const border &bord)
int main(int argc, const char *argv[])
int y_min() const
Definition: dataset.cc:196
dataset_group group(const std::string &grp) const
Definition: dataset.cc:265
int y_mid() const
Definition: dataset.cc:226
std::string string_opt_arg(const std::string &def="")
Definition: args.h:36
void get_args(int argc, const char *argv[], const std::string &usage)
Definition: args.cc:49