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