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)16bool 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)35bool 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)64bool 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)83bool 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