28 #include <mln/core/image/image2d.hh>
29 #include <mln/io/pbm/load.hh>
30 #include <mln/value/int_u16.hh>
31 #include <mln/draw/box_plain.hh>
32 #include <mln/pw/all.hh>
33 #include <mln/core/image/dmorph/image_if.hh>
34 #include <mln/data/convert.hh>
35 #include <mln/literal/colors.hh>
37 #include <scribo/debug/usage.hh>
39 #include <scribo/core/document.hh>
40 #include <scribo/core/component_set.hh>
41 #include <scribo/core/object_links.hh>
42 #include <scribo/core/object_groups.hh>
44 #include <scribo/text/extract_lines.hh>
46 #include <scribo/io/xml/save.hh>
49 const char *args_desc[][2] =
56 int main(
int argc,
char* argv[])
58 using namespace scribo;
64 "input.pbm input_seps.pbm out_text_boxes.ppm out_text_boxes.pbm out_text_comps.pbm out_lines.xml",
82 std::cout << t <<
"s" << std::endl;
87 for_all_lines(l, lines)
88 if (lines(l).is_textline())
89 mln::draw::
box(output, lines(l).
bbox(), literal::red);
90 mln::io::ppm::
save(output, argv[3]);
98 for_all_lines(l, lines)
99 if (lines(l).is_textline())
100 mln::draw::
box_plain(output, lines(l).bbox(), true);
101 mln::io::pbm::
save(output, argv[4]);
108 for_all_lines(l, lines)
109 if (lines(l).is_textline())
112 const L& lbl = lines.components().labeled_image();
113 for_all_elements(c, comps)
115 ((input | lines.
components()(comps(c)).bbox()) | (pw::
value(lbl) == comps(c))));
117 mln::io::pbm::
save(output, argv[5]);
123 doc.set_paragraphs(scribo::make::paragraph(lines));
124 scribo::io::xml::
save(doc, argv[6], scribo::io::xml::Full);