1 // This is brl/bpro/core/vil_pro/processes/vil_load_image_view_binary_process.cxx 2 #include <iostream> 3 #include <string> 4 #include <bprb/bprb_func_process.h> 5 //: 6 // \file 7 8 #include <bprb/bprb_parameters.h> 9 #ifdef _MSC_VER 10 # include "vcl_msvc_warnings.h" 11 #endif 12 #include "vil/vil_image_view_base.h" 13 #include <vil/io/vil_io_image_view_base.h> 14 15 //: Constructor vil_load_image_view_binary_process_cons(bprb_func_process & pro)16bool vil_load_image_view_binary_process_cons(bprb_func_process& pro) 17 { 18 //input 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 //output 26 std::vector<std::string> output_types; 27 output_types.emplace_back("vil_image_view_base_sptr"); 28 ok = pro.set_output_types(output_types); 29 if (!ok) return ok; 30 return true; 31 } 32 33 34 //: Execute the process vil_load_image_view_binary_process(bprb_func_process & pro)35bool vil_load_image_view_binary_process(bprb_func_process& pro) 36 { 37 // Sanity check 38 if (pro.n_inputs()< 1) { 39 std::cout << "vil_load_image_view_binary_process: The input number should be 1" << std::endl; 40 return false; 41 } 42 43 // get the inputs 44 unsigned i=0; 45 std::string image_filename = pro.get_input<std::string>(i++); 46 47 vsl_b_ifstream is(image_filename); 48 vil_image_view_base_sptr loaded_image; 49 vsl_b_read(is, loaded_image); 50 is.close(); 51 52 if ( !loaded_image ) { 53 std::cerr << "Failed to load image file: " << image_filename << std::endl; 54 return false; 55 } 56 57 pro.set_output_val<vil_image_view_base_sptr>(0, loaded_image); 58 return true; 59 } 60