28 #include <mln/core/image/image2d.hh>
29 #include <mln/core/alias/neighb2d.hh>
31 #include <mln/literal/colors.hh>
32 #include <mln/util/graph.hh>
34 #include <mln/labeling/colorize.hh>
36 #include <mln/value/rgb8.hh>
37 #include <mln/value/label_16.hh>
39 #include <mln/io/pbm/load.hh>
40 #include <mln/io/ppm/save.hh>
42 #include <scribo/core/object_groups.hh>
43 #include <scribo/primitive/extract/objects.hh>
44 #include <scribo/primitive/link/with_several_graphes.hh>
45 #include <scribo/primitive/group/from_graph.hh>
46 #include <scribo/primitive/group/apply.hh>
48 #include <scribo/debug/save_bboxes_image.hh>
49 #include <scribo/debug/save_linked_bboxes_image.hh>
50 #include <scribo/make/debug_filename.hh>
52 int usage(
const char *name)
54 std::cout <<
"Usage: " << name <<
" <input.pbm> " << std::endl;
58 int main(
int argc,
char* argv[])
60 using namespace scribo;
64 return usage(argv[0]);
66 scribo::make::internal::debug_filename_prefix =
"group_with_several_graph";
71 value::label_16 nbboxes;
73 typedef object_image(L) text_t;
74 text_t text = scribo::primitive::extract::objects(input,
c8(), nbboxes);
76 mln::util::graph g = primitive::link::with_several_graphes(text, 128);
78 std::cout << "BEFORE - nbboxes = " << nbboxes.next() << std::endl;
79 scribo::debug::save_linked_bboxes_image(input,
81 literal::red, literal::cyan,
82 scribo::make::debug_filename("left_linked.ppm"));
84 object_groups<L> groups = primitive::group::from_graph(text, g);
86 text_t grouped_text = primitive::group::
apply(text, groups);
88 std::cout << "AFTER - nbboxes = " << grouped_text.bboxes().nelements() << std::endl;
90 scribo::debug::save_bboxes_image(input, grouped_text.bboxes(),
92 scribo::make::debug_filename("grouped_text.ppm"));
95 grouped_text.nlabels()),
96 scribo::make::debug_filename("label_color.ppm"));