1 // This is brl/bpro/core/vpgl_pro/processes/vpgl_load_rational_camera_process.cxx
2 #include <iostream>
3 #include <bprb/bprb_func_process.h>
4 //:
5 // \file
6 
7 #include <bprb/bprb_parameters.h>
8 #ifdef _MSC_VER
9 #  include "vcl_msvc_warnings.h"
10 #endif
11 #include "vpgl/vpgl_camera.h"
12 #include "vpgl/vpgl_rational_camera.h"
13 #include "vpgl/vpgl_local_rational_camera.h"
14 
15 //: initialization
vpgl_load_rational_camera_process_cons(bprb_func_process & pro)16 bool vpgl_load_rational_camera_process_cons(bprb_func_process& pro)
17 {
18   //this process takes one input: the filename
19   bool ok=false;
20   std::vector<std::string> input_types;
21   input_types.emplace_back("vcl_string");
22   ok = pro.set_input_types(input_types);
23   if (!ok) return ok;
24 
25   std::vector<std::string> output_types;
26   output_types.emplace_back("vpgl_camera_double_sptr");  // label image
27   ok = pro.set_output_types(output_types);
28   if (!ok) return ok;
29 
30   return true;
31 
32 }
33 
34 //: Execute the process
vpgl_load_rational_camera_process(bprb_func_process & pro)35 bool vpgl_load_rational_camera_process(bprb_func_process& pro)
36 {
37   if (pro.n_inputs()< 1) {
38     std::cout << "lvpgl_load_rational_camera_process: The input number should be 1" << std::endl;
39     return false;
40   }
41 
42   // get the inputs
43   std::string camera_filename = pro.get_input<std::string>(0);
44 
45   vpgl_camera_double_sptr ratcam = read_local_rational_camera<double>(camera_filename);
46 
47   if ( !ratcam.as_pointer() ) {
48     //std::cerr << "Rational camera isn't local... trying global" << std::endl;
49     ratcam = read_rational_camera<double>(camera_filename);
50 
51   }
52 
53   if ( !ratcam.as_pointer() ) {
54     std::cerr << "Failed to load rational camera from file" << camera_filename << std::endl;
55     return false;
56   }
57 
58   pro.set_output_val<vpgl_camera_double_sptr>(0, ratcam);
59 
60   return true;
61 }
62 
63 //: initialization
vpgl_load_rational_camera_from_txt_process_cons(bprb_func_process & pro)64 bool vpgl_load_rational_camera_from_txt_process_cons(bprb_func_process& pro)
65 {
66   //this process takes one input: the filename
67   bool ok=false;
68   std::vector<std::string> input_types;
69   input_types.emplace_back("vcl_string");
70   ok = pro.set_input_types(input_types);
71   if (!ok) return ok;
72 
73   std::vector<std::string> output_types;
74   output_types.emplace_back("vpgl_camera_double_sptr");  // label image
75   ok = pro.set_output_types(output_types);
76   if (!ok) return ok;
77 
78   return true;
79 
80 }
81 
82 //: Execute the process
vpgl_load_rational_camera_from_txt_process(bprb_func_process & pro)83 bool vpgl_load_rational_camera_from_txt_process(bprb_func_process& pro)
84 {
85   if (pro.n_inputs()< 1) {
86     std::cout << "lvpgl_load_rational_camera_from_txt_process: The input number should be 1" << std::endl;
87     return false;
88   }
89 
90   // get the inputs
91   std::string camera_filename = pro.get_input<std::string>(0);
92 
93   vpgl_camera_double_sptr ratcam = read_rational_camera_from_txt<double>(camera_filename);
94 
95   if ( !ratcam.as_pointer() ) {
96     std::cerr << "Failed to load rational camera from file" << camera_filename << std::endl;
97     return false;
98   }
99 
100   pro.set_output_val<vpgl_camera_double_sptr>(0, ratcam);
101 
102   return true;
103 }
104