
Hi all, I am trying to use GIL and face a problem. Here is the code : namespace boost { namespace gil { /// Extension a GIL pour gerer les pixels "double" ... typedef pixel< double, boost::gil::gray_layout_t > gray64_pixel_t; typedef image< gray64_pixel_t, false > gray64_image_t; typedef image< gray64_pixel_t, true > gray64_planar_image_t; //typedef image_view< gray64_pixel_t > gray64_view_t; } } int main ( int argc , char **argv) { typedef boost::mpl::vector< boost::gil::gray8_image_t, boost::gil::gray16_image_t, boost::gil::gray32_image_t, //boost::gil::gray64_image_t, boost::gil::rgb8_image_t, boost::gil::rgb16_image_t, boost::gil::rgb32_image_t > my_img_types; typedef boost::mpl::vector< boost::gil::gray8_view_t, boost::gil::gray16_view_t, boost::gil::gray32_view_t, //boost::gil::gray64_view_t, boost::gil::rgb8_view_t, boost::gil::rgb16_view_t, boost::gil::rgb32_view_t > my_view_types; if ( argc < 4 ) { usage(); return 1; } std::string input_filename( argv[1] ); std::string output_filename( argv[3] ); int channel_index; try { channel_index = boost::lexical_cast<int>( argv[2] ); } catch( boost::bad_lexical_cast &e) { std::cout << "bad_lexical_cast exception : " << e.what() << std::endl; return 1; } boost::gil::any_image<my_img_types> runtime_image; boost::gil::any_image_view<my_view_types> runtime_view; try { boost::gil::jpeg_read_image( input_filename , runtime_image ); runtime_view = boost::gil::nth_channel_view( const_view(runtime_image) , channel_index ); boost::gil::jpeg_write_view( output_filename , runtime_view ); } catch( std::exception &e ) { std::cout << e.what() << std::endl; return 1; } return 0; } I get an exception on this line : runtime_view = boost::gil::nth_channel_view( const_view(runtime_image) , channel_index ); However, when I write : boost::gil::jpeg_write_view( output_filename , boost::gil::nth_channel_view( const_view(runtime_image) , channel_index ) ); everything goes well. Where is my mistake ? Best regards, Olivier -- Olivier Tournaire MATIS - Institut Géographique National 73, Ave de Paris 94165 St Mandé cedex, France tel: (+33) 1 43 98 80 00 - 71 25 fax: (+33) 1 43 98 85 81