#N canvas 1 49 1424 780 10;
#X obj 41 -81 cnv 15 621 300 empty empty empty 20 12 0 14 -260097 -66577
0;
#X obj 301 -30 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 301 -3 metro 40;
#X msg 382 16 close;
#X msg 378 -8 open /dev/video0;
#X obj 321 95 pdp_v4l2;
#X obj 44 328 cnv 15 621 360 empty empty empty 20 12 0 14 -258113 -66577
0;
#X obj 91 703 pdp_xv;
#X obj 44 244 cnv 15 621 73 empty empty empty 20 12 0 14 -260801 -66577
0;
#X floatatom 243 280 5 0 0 0 - - -;
#X text 281 279 threshold (default 13) to use when comparing pixel
colors;
#X msg 387 71 format \$1;
#X obj 388 49 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
-1 0;
#X obj 93 280 pdp_opencv_threshold;
#X text 46 -136 Play here with a simple pattern image loaded and play
with zoom and rotation.;
#X text 46 -111 Written by Yves Degoyon ( ydegoyon@gmail.com );
#X text 46 -162 The moments of contours should be constant ( Hu moments
invariants ) when the shapes are zoomed or rotated.;
#X obj 93 157 pdp_qt;
#X obj 125 92 metro 40;
#X msg 125 64 bang;
#X msg 166 64 stop;
#X obj 92 -5 openpanel;
#X msg 92 20 open \$1;
#X msg 92 -33 bang;
#X msg 126 119 loop \$1;
#X obj 206 119 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 206 37 loadbang;
#X text 143 -32 playing a video file;
#X text 161 -19 ( try estrella.mov );
#N canvas 0 220 1415 776 extract_biggest_contour 0;
#X obj 117 34 inlet;
#X obj 127 518 outlet;
#X floatatom 263 122 5 0 0 0 - - -;
#X floatatom 335 135 5 0 0 0 - - -;
#X obj 145 150 pdp_opencv_contours_boundingrect;
#X text 301 120 minimal area in pixels to be detected (default 10x10)
;
#X text 372 136 maximal area in pixels to be detected (default 320x240)
;
#N canvas 63 323 605 502 smax 0;
#X obj 37 368 route 1;
#X obj 80 233 t f b;
#X obj 127 258 f;
#X obj 41 329 >;
#X obj 94 282 f 0;
#X obj 193 253 f;
#X obj 209 290 outlet;
#X msg 199 184 0;
#X obj 220 130 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 225 97 loadbang;
#X obj 105 73 unpack f f f f f;
#X obj 99 115 *;
#X obj 88 143 f;
#X obj 142 117 t b f;
#X obj 132 25 inlet;
#X obj 156 183 f;
#X msg 172 384 bang;
#X msg 200 212 bang;
#X obj 119 319 f;
#X obj 111 343 outlet;
#X obj 204 154 metro 100;
#X connect 0 0 16 0;
#X connect 1 0 2 1;
#X connect 1 0 3 0;
#X connect 1 1 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 3 1;
#X connect 4 0 18 1;
#X connect 5 0 6 0;
#X connect 7 0 2 1;
#X connect 7 0 4 1;
#X connect 7 0 17 0;
#X connect 8 0 20 0;
#X connect 9 0 8 0;
#X connect 10 0 13 0;
#X connect 10 3 11 0;
#X connect 10 4 11 1;
#X connect 11 0 12 1;
#X connect 12 0 1 0;
#X connect 13 0 12 0;
#X connect 13 1 15 1;
#X connect 14 0 10 0;
#X connect 15 0 5 1;
#X connect 16 0 2 0;
#X connect 16 0 15 0;
#X connect 17 0 5 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 20 0 7 0;
#X restore 213 197 pd smax;
#X floatatom 284 226 5 0 0 0 - - -;
#X text 322 226 biggest contour number;
#X obj 212 267 unpack f f f f;
#X obj 133 420 pdp_cropper;
#X obj 209 351 +;
#X obj 253 351 +;
#X obj 159 186 pdp_xv;
#X text 219 421 crop biggest contour;
#X obj 133 469 pdp_scale 320 240;
#N canvas 418 122 450 300 sroute 0;
#X obj 148 99 inlet;
#X obj 90 54 list split 1;
#X obj 90 31 inlet;
#X obj 90 188 outlet;
#X obj 90 124 select \$1;
#X obj 90 154 list;
#X connect 0 0 4 1;
#X connect 1 0 4 0;
#X connect 1 1 5 1;
#X connect 2 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X restore 213 246 pd sroute;
#X obj 222 322 expr $f1+8-($f1%8);
#X obj 293 295 expr $f1+8-($f1%8);
#X msg 227 46 nightmode 1;
#X msg 240 74 draw 0;
#X msg 259 98 show 1;
#X obj 332 49 loadbang;
#X connect 0 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 4 2;
#X connect 4 0 11 0;
#X connect 4 0 14 0;
#X connect 4 1 7 0;
#X connect 4 1 17 0;
#X connect 7 1 8 0;
#X connect 8 0 17 1;
#X connect 10 0 12 0;
#X connect 10 0 11 1;
#X connect 10 1 13 0;
#X connect 10 1 11 3;
#X connect 10 2 18 0;
#X connect 10 3 19 0;
#X connect 11 0 16 0;
#X connect 12 0 11 2;
#X connect 13 0 11 4;
#X connect 16 0 1 0;
#X connect 17 0 10 0;
#X connect 18 0 12 1;
#X connect 19 0 13 1;
#X connect 20 0 4 0;
#X connect 21 0 4 0;
#X connect 22 0 4 0;
#X connect 23 0 20 0;
#X connect 23 0 21 0;
#X connect 23 0 22 0;
#X restore 93 343 pd extract_biggest_contour;
#X text 262 342 abstraction to extract biggest contour;
#X obj 311 253 loadbang;
#X msg 280 253 160;
#X msg 137 440 binary \$1;
#X obj 207 441 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 240 441 treat incoming frames as binary data;
#X text 230 468 calculates hu moments invariants;
#X obj 92 466 pdp_opencv_hu_moments;
#X obj 224 508 unpack f f f f f f f;
#X floatatom 234 535 30 0 0 0 - - h1;
#X text 214 534 h1;
#X floatatom 245 557 30 0 0 0 - - h2;
#X floatatom 256 578 30 0 0 0 - - h3;
#X floatatom 269 599 30 0 0 0 - - h4;
#X floatatom 285 621 30 0 0 0 - - h5;
#X floatatom 297 641 30 0 0 0 - - h6;
#X floatatom 306 664 30 0 0 0 - - h7;
#X text 225 556 h2;
#X text 237 577 h3;
#X text 250 598 h4;
#X text 265 620 h5;
#X text 277 640 h6;
#X text 286 663 h7;
#X floatatom 163 412 5 0 0 0 - - -;
#X obj 92 410 pdp_rotate;
#X text 211 410 <-- rotate the frames;
#X floatatom 206 378 5 0 0 0 - - -;
#X obj 92 376 pdp_zoom;
#X text 244 376 <-- zoom the frames;
#X obj 158 377 / 100;
#X text 62 -63 INPUT : movie or camera;
#X obj 684 -82 cnv 15 621 300 empty empty empty 20 12 0 14 -260097
-66577 0;
#X obj 725 -3 openpanel;
#X msg 706 -32 bang;
#X obj 705 65 pdp_background;
#X obj 705 142 pdp_imgloader;
#X obj 705 42 metro 40;
#X msg 724 21 load \$1 0 0;
#X text 752 -33 loading a pattern image;
#X obj 705 112 pdp_scale 320 240;
#X obj 705 89 pdp_convert image/YCrCb/*;
#X text 751 -20 ( try estrella.jpg );
#X obj 764 42 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 705 -64 Compare to a pattern;
#X obj 686 242 cnv 15 621 73 empty empty empty 20 12 0 14 -260801 -66577
0;
#X floatatom 856 278 5 0 0 0 - - -;
#X text 894 277 threshold (default 13) to use when comparing pixel
colors;
#X obj 706 278 pdp_opencv_threshold;
#X obj 924 251 loadbang;
#X msg 893 251 160;
#X obj 282 297 s trashh;
#X obj 824 250 r trashh;
#X obj 686 322 cnv 15 621 360 empty empty empty 20 12 0 14 -258113
-66577 0;
#N canvas 0 325 1415 776 extract_biggest_contour 0;
#X obj 117 34 inlet;
#X obj 127 518 outlet;
#X floatatom 263 122 5 0 0 0 - - -;
#X floatatom 335 135 5 0 0 0 - - -;
#X obj 145 150 pdp_opencv_contours_boundingrect;
#X text 301 120 minimal area in pixels to be detected (default 10x10)
;
#X text 372 136 maximal area in pixels to be detected (default 320x240)
;
#N canvas 63 323 605 502 smax 0;
#X obj 37 368 route 1;
#X obj 80 233 t f b;
#X obj 127 258 f;
#X obj 41 329 >;
#X obj 94 282 f 0;
#X obj 193 253 f;
#X obj 209 290 outlet;
#X msg 199 184 0;
#X obj 220 130 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 225 97 loadbang;
#X obj 105 73 unpack f f f f f;
#X obj 99 115 *;
#X obj 88 143 f;
#X obj 142 117 t b f;
#X obj 132 25 inlet;
#X obj 156 183 f;
#X msg 172 384 bang;
#X msg 200 212 bang;
#X obj 119 319 f;
#X obj 111 343 outlet;
#X obj 204 154 metro 100;
#X connect 0 0 16 0;
#X connect 1 0 2 1;
#X connect 1 0 3 0;
#X connect 1 1 4 0;
#X connect 2 0 4 1;
#X connect 3 0 0 0;
#X connect 4 0 3 1;
#X connect 4 0 18 1;
#X connect 5 0 6 0;
#X connect 7 0 2 1;
#X connect 7 0 4 1;
#X connect 7 0 17 0;
#X connect 8 0 20 0;
#X connect 9 0 8 0;
#X connect 10 0 13 0;
#X connect 10 3 11 0;
#X connect 10 4 11 1;
#X connect 11 0 12 1;
#X connect 12 0 1 0;
#X connect 13 0 12 0;
#X connect 13 1 15 1;
#X connect 14 0 10 0;
#X connect 15 0 5 1;
#X connect 16 0 2 0;
#X connect 16 0 15 0;
#X connect 17 0 5 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 20 0 7 0;
#X restore 213 197 pd smax;
#X floatatom 284 226 5 0 0 0 - - -;
#X text 322 226 biggest contour number;
#X obj 212 267 unpack f f f f;
#X obj 133 420 pdp_cropper;
#X obj 209 351 +;
#X obj 253 351 +;
#X obj 159 186 pdp_xv;
#X text 219 421 crop biggest contour;
#X obj 133 469 pdp_scale 320 240;
#N canvas 418 122 450 300 sroute 0;
#X obj 148 99 inlet;
#X obj 90 54 list split 1;
#X obj 90 31 inlet;
#X obj 90 188 outlet;
#X obj 90 124 select \$1;
#X obj 90 154 list;
#X connect 0 0 4 1;
#X connect 1 0 4 0;
#X connect 1 1 5 1;
#X connect 2 0 1 0;
#X connect 4 0 5 0;
#X connect 5 0 3 0;
#X restore 213 246 pd sroute;
#X obj 222 322 expr $f1+8-($f1%8);
#X obj 293 295 expr $f1+8-($f1%8);
#X msg 227 46 nightmode 1;
#X msg 240 74 draw 0;
#X msg 259 98 show 1;
#X obj 332 49 loadbang;
#X connect 0 0 4 0;
#X connect 2 0 4 1;
#X connect 3 0 4 2;
#X connect 4 0 11 0;
#X connect 4 0 14 0;
#X connect 4 1 7 0;
#X connect 4 1 17 0;
#X connect 7 1 8 0;
#X connect 8 0 17 1;
#X connect 10 0 12 0;
#X connect 10 0 11 1;
#X connect 10 1 13 0;
#X connect 10 1 11 3;
#X connect 10 2 18 0;
#X connect 10 3 19 0;
#X connect 11 0 16 0;
#X connect 12 0 11 2;
#X connect 13 0 11 4;
#X connect 16 0 1 0;
#X connect 17 0 10 0;
#X connect 18 0 12 1;
#X connect 19 0 13 1;
#X connect 20 0 4 0;
#X connect 21 0 4 0;
#X connect 22 0 4 0;
#X connect 23 0 20 0;
#X connect 23 0 21 0;
#X connect 23 0 22 0;
#X restore 708 337 pd extract_biggest_contour;
#X text 877 336 abstraction to extract biggest contour;
#X msg 752 434 binary \$1;
#X obj 822 435 tgl 15 0 empty sbin empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 847 435 treat incoming frames as binary data;
#X text 845 462 calculates hu moments invariants;
#X obj 707 460 pdp_opencv_hu_moments;
#X obj 839 502 unpack f f f f f f f;
#X floatatom 849 529 30 0 0 0 - - -;
#X text 829 528 h1;
#X floatatom 860 551 30 0 0 0 - - -;
#X floatatom 871 572 30 0 0 0 - - -;
#X floatatom 884 593 30 0 0 0 - - -;
#X floatatom 900 615 30 0 0 0 - - -;
#X floatatom 912 635 30 0 0 0 - - -;
#X floatatom 921 658 30 0 0 0 - - -;
#X text 840 550 h2;
#X text 852 571 h3;
#X text 865 592 h4;
#X text 880 614 h5;
#X text 892 634 h6;
#X text 901 657 h7;
#X floatatom 778 406 5 0 0 0 - - -;
#X obj 707 404 pdp_rotate;
#X text 826 404 <-- rotate the frames;
#X floatatom 821 372 5 0 0 0 - - -;
#X obj 707 370 pdp_zoom;
#X text 859 370 <-- zoom the frames;
#X obj 773 371 / 100;
#X obj 764 527 r h1;
#X obj 800 527 -;
#X obj 809 551 -;
#X obj 820 574 -;
#X obj 835 596 -;
#X obj 851 618 -;
#X obj 865 637 -;
#X obj 872 657 -;
#X obj 773 551 r h2;
#X obj 784 574 r h3;
#X obj 799 596 r h4;
#X obj 815 617 r h5;
#X obj 829 637 r h6;
#X obj 836 657 r h7;
#X obj 708 493 pdp_xv;
#X floatatom 185 94 5 0 0 0 - - -;
#X msg 140 157 224;
#X text 46 -186 pdp_opencv_hu_moments :: Calculates the hu moments
of contours.;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 3 0 5 0;
#X connect 4 0 5 0;
#X connect 5 0 13 0;
#X connect 9 0 13 2;
#X connect 9 0 80 0;
#X connect 11 0 5 0;
#X connect 12 0 11 0;
#X connect 13 0 29 0;
#X connect 17 0 13 0;
#X connect 18 0 17 0;
#X connect 19 0 18 0;
#X connect 20 0 18 0;
#X connect 21 0 22 0;
#X connect 22 0 17 0;
#X connect 23 0 21 0;
#X connect 24 0 17 0;
#X connect 25 0 24 0;
#X connect 26 0 25 0;
#X connect 26 0 19 0;
#X connect 29 0 57 0;
#X connect 31 0 32 0;
#X connect 32 0 9 0;
#X connect 33 0 37 0;
#X connect 34 0 33 0;
#X connect 37 0 7 0;
#X connect 37 1 38 0;
#X connect 38 0 39 0;
#X connect 38 1 41 0;
#X connect 38 2 42 0;
#X connect 38 3 43 0;
#X connect 38 4 44 0;
#X connect 38 5 45 0;
#X connect 38 6 46 0;
#X connect 53 0 54 1;
#X connect 54 0 37 0;
#X connect 56 0 59 0;
#X connect 57 0 54 0;
#X connect 59 0 57 1;
#X connect 62 0 67 0;
#X connect 63 0 62 0;
#X connect 63 0 66 0;
#X connect 64 0 70 0;
#X connect 65 0 77 0;
#X connect 66 0 64 0;
#X connect 67 0 65 0;
#X connect 69 0 65 0;
#X connect 70 0 69 0;
#X connect 72 0 66 0;
#X connect 75 0 77 2;
#X connect 77 0 83 0;
#X connect 78 0 79 0;
#X connect 79 0 75 0;
#X connect 81 0 75 0;
#X connect 83 0 109 0;
#X connect 85 0 89 0;
#X connect 86 0 85 0;
#X connect 89 0 126 0;
#X connect 89 1 90 0;
#X connect 90 0 113 1;
#X connect 90 1 114 1;
#X connect 90 2 115 1;
#X connect 90 3 116 1;
#X connect 90 4 117 1;
#X connect 90 5 118 1;
#X connect 90 6 119 1;
#X connect 105 0 106 1;
#X connect 106 0 89 0;
#X connect 108 0 111 0;
#X connect 109 0 106 0;
#X connect 111 0 109 1;
#X connect 112 0 113 0;
#X connect 113 0 91 0;
#X connect 114 0 93 0;
#X connect 115 0 94 0;
#X connect 116 0 95 0;
#X connect 117 0 96 0;
#X connect 118 0 97 0;
#X connect 119 0 98 0;
#X connect 120 0 114 0;
#X connect 121 0 115 0;
#X connect 122 0 116 0;
#X connect 123 0 117 0;
#X connect 124 0 118 0;
#X connect 125 0 119 0;
#X connect 127 0 18 1;
#X connect 128 0 17 1;