00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <mln/core/image/image2d.hh>
00027 #include <mln/core/site_set/p_array.hh>
00028
00029 #include <mln/util/graph.hh>
00030
00031 #include <mln/value/label_8.hh>
00032
00033 #include <mln/make/p_vertices_with_mass_centers.hh>
00034
00035 int main()
00036 {
00037 using namespace mln;
00038
00039 typedef value::label_8 L;
00040
00041 L data[] = {
00042 1, 1, 1, 0, 2, 2, 2,
00043 1, 1, 1, 0, 2, 2, 2,
00044 1, 1, 1, 0, 2, 2, 2,
00045 0, 0, 0, 0, 0, 0, 0,
00046 3, 3, 3, 0, 4, 4, 4,
00047 3, 3, 3, 0, 4, 4, 4,
00048 3, 3, 3, 0, 4, 4, 4
00049 };
00050
00051 image2d<L> wst = make::image2d(data);
00052 typedef util::graph G;
00053 G g;
00054 g.add_vertices(5);
00055 g.add_edge(1,2);
00056 g.add_edge(1,3);
00057 g.add_edge(4,3);
00058 g.add_edge(4,2);
00059
00060 L nbasins = 4;
00061 typedef p_vertices<G,fun::i2v::array<point2d> > pv_t;
00062 pv_t pv = make::p_vertices_with_mass_centers(wst, g);
00063
00064 typedef p_array<point2d> arr_t;
00065 arr_t arr;
00066 arr.insert(point2d(3,3));
00067 arr.insert(point2d(1,1));
00068 arr.insert(point2d(1,5));
00069 arr.insert(point2d(5,1));
00070 arr.insert(point2d(5,5));
00071
00072 mln_piter_(pv_t) p1(pv);
00073 mln_piter_(arr_t) p2(arr);
00074 for_all_2(p1,p2)
00075 mln_assertion(p1 == p2);
00076 }