28 #include <mln/core/image/image2d.hh>
29 #include <mln/value/label_16.hh>
30 #include <mln/io/ppm/save.hh>
31 #include <mln/io/pbm/load.hh>
32 #include <mln/core/alias/neighb2d.hh>
33 #include <mln/literal/colors.hh>
34 #include <mln/labeling/colorize.hh>
36 #include <scribo/primitive/extract/objects.hh>
37 #include <scribo/primitive/link/with_graph.hh>
38 #include <scribo/primitive/group/from_graph.hh>
39 #include <scribo/primitive/group/apply.hh>
41 #include <scribo/debug/save_bboxes_image.hh>
42 #include <scribo/debug/save_linked_bboxes_image.hh>
43 #include <scribo/make/debug_filename.hh>
45 int usage(
const char *name)
47 std::cout <<
"Usage: " << name <<
" <input.pbm> " << std::endl;
51 int main(
int argc,
char* argv[])
53 using namespace scribo;
57 return usage(argv[0]);
59 scribo::make::internal::debug_filename_prefix =
"group_with_graph";
64 value::label_16 nbboxes;
66 typedef object_image(L) text_t;
67 text_t text = primitive::extract::objects(input,
c8(), nbboxes);
69 mln::util::graph g = primitive::link::with_graph(text, 255);
71 std::cout << "BEFORE - nbboxes = " << nbboxes.next() << std::endl;
72 scribo::debug::save_linked_bboxes_image(input,
74 literal::red, literal::cyan,
75 scribo::make::debug_filename("left_linked.ppm"));
82 = primitive::group::from_graph(text, g);
84 text_t grouped_text = primitive::group::
apply(text, groups);
86 std::cout << "AFTER - nbboxes = " << grouped_text.bboxes().nelements() << std::endl;
88 scribo::debug::save_bboxes_image(input, grouped_text.bboxes(),
90 scribo::make::debug_filename("grouped_text.ppm"));
93 grouped_text.nlabels()),
94 scribo::make::debug_filename("label_color.ppm"));