TuttleOFX
1
|
00001 #include <tuttle/common/utils/global.hpp> 00002 00003 #include <boost/gil/gil_all.hpp> 00004 00005 #define png_infopp_NULL (png_infopp)NULL 00006 #define int_p_NULL (int*)NULL 00007 00008 #include <boost/gil/extension/io/png_io.hpp> 00009 00010 #include <boost/preprocessor/stringize.hpp> 00011 #include <boost/lexical_cast.hpp> 00012 #include <boost/exception/all.hpp> 00013 00014 #include <boost/timer.hpp> 00015 #include <boost/date_time/posix_time/posix_time.hpp> 00016 00017 #include <iostream> 00018 00019 #include <terry/filter/canny.hpp> 00020 00021 00022 int main( int argc, char** argv ) 00023 { 00024 boost::shared_ptr<tuttle::common::formatters::Formatter> formatter( tuttle::common::formatters::Formatter::get() ); 00025 boost::shared_ptr<tuttle::common::Color> color( tuttle::common::Color::get() ); 00026 formatter->init_logging(); 00027 color->disable(); 00028 00029 try 00030 { 00031 using namespace boost::gil; 00032 00033 boost::gil::rgb32f_image_t img; 00034 boost::gil::png_read_and_convert_image( "data/input.png", img ); 00035 boost::gil::rgb32f_view_t imgView( view(img) ); 00036 00037 TUTTLE_LOG_INFO( "input - x:" << imgView.width() << ", y:" << imgView.height() ); 00038 TUTTLE_LOG_INFO( "input - size:" << imgView.size() ); 00039 00040 boost::gil::gray32f_image_t imgCanny( imgView.width(), imgView.height() ); 00041 boost::gil::rgb32f_image_t tmpImgRgb( imgView.width(), imgView.height() ); 00042 boost::gil::gray32f_image_t tmpImgGray( imgView.width(), imgView.height() ); 00043 00044 boost::timer t; 00045 terry::filter::canny<std::allocator>( 00046 imgView, 00047 view(tmpImgRgb), view(tmpImgGray), 00048 view(imgCanny), 00049 point2<double>(1, 1), 00050 terry::filter::convolve_option_extend_zero, 00051 0.025, 0.1 00052 ); 00053 TUTTLE_LOG_INFO( "full canny time: " << t.elapsed() ); 00054 00055 boost::gil::png_write_view( "data/terry/output_canny_terry.png", color_converted_view<rgb8_pixel_t>( view(imgCanny) ) ); 00056 } 00057 catch(... ) 00058 { 00059 TUTTLE_LOG_ERROR( "Exception ... : main de sam." ); 00060 TUTTLE_LOG_ERROR( boost::current_exception_diagnostic_information() ); 00061 00062 } 00063 00064 return 0; 00065 } 00066