#N canvas 1049 0 999 694 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 46 322 cnv 15 621 250 empty empty empty 20 12 0 14 -258113 -66577 0; #X obj 93 604 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 387 50 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 52 -114 Written by Yves Degoyon ( ydegoyon@gmail.com ); #X obj 93 157 pdp_qt; #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 ); #X obj 319 253 loadbang; #X msg 280 253 160; #X floatatom 182 521 30 0 0 0 - - -; #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 142 pdp_imgloader; #X obj 705 42 metro 40; #X msg 724 21 load \$1 0 0; #X text 752 -39 loading a pattern image; #X obj 705 112 pdp_scale 320 240; #X obj 705 89 pdp_convert image/YCrCb/*; #X text 751 -26 ( 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 -57 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 705 277 pdp_opencv_threshold; #X obj 924 251 loadbang; #X msg 893 251 160; #X floatatom 185 94 5 0 0 0 - - -; #X obj 93 440 pdp_opencv_hu_compare; #X text 187 504 distance; #X obj 236 361 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X text 287 355 method used for comparison : one of : CV_CONTOURS_MATCH_I1 \, CV_CONTOURS_MATCH_I2 or CV_CONTOURS_MATCH_I3; #X text 228 445 calculating their hu moments ( CvMatchShape ); #X obj 112 189 s frame; #X floatatom 687 554 10 0 0 0 - - -; #X floatatom 745 532 5 0 0 0 - - -; #X text 781 532 frame; #X obj 723 508 r frame; #N canvas 5 441 449 300 cmin 0; #X obj 70 144 route 1; #X msg 122 144 bang; #X obj 42 70 t f b; #X obj 89 95 f; #X obj 45 44 inlet; #X obj 73 180 outlet; #X obj 188 42 inlet; #X obj 208 97 f; #X obj 211 160 outlet; #X obj 43 144 <; #X obj 56 119 f 189; #X msg 109 73 18; #X obj 123 48 loadbang; #X obj 125 104 r reset; #N canvas 1 49 1424 780 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 68 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 10; #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 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 240 74 draw 0; #X msg 259 98 show 1; #X obj 332 49 loadbang; #X msg 208 46 nightmode \$1; #X obj 192 20 r nightmode; #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 1 7 0; #X connect 4 1 16 0; #X connect 7 1 8 0; #X connect 8 0 16 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 17 0; #X connect 10 3 18 0; #X connect 11 0 15 0; #X connect 12 0 11 2; #X connect 13 0 11 4; #X connect 15 0 1 0; #X connect 16 0 10 0; #X connect 17 0 12 1; #X connect 18 0 13 1; #X connect 19 0 4 0; #X connect 20 0 4 0; #X connect 21 0 19 0; #X connect 21 0 20 0; #X connect 22 0 4 0; #X connect 23 0 22 0; #X restore 152 219 pd extract_biggest_contour; #X text 149 199 abstraction to extract biggest contour; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 1 0 7 0; #X connect 1 0 10 0; #X connect 2 0 3 1; #X connect 2 0 9 0; #X connect 2 1 10 0; #X connect 3 0 10 1; #X connect 4 0 2 0; #X connect 6 0 7 1; #X connect 7 0 8 0; #X connect 9 0 0 0; #X connect 10 0 5 0; #X connect 10 0 9 1; #X connect 11 0 10 1; #X connect 12 0 11 0; #X connect 13 0 11 0; #X restore 687 530 pd cmin; #X text 753 555 min; #X obj 125 92 metro 100; #X msg 779 509 bang; #X obj 783 554 s iframe; #X obj 174 156 r iframe; #X obj 144 157 - 1; #X msg 52 119 bang; #X obj 111 502 pdp_xv; #X obj 208 360 + 1; #X obj 705 65 pdp_noise; #X obj 282 297 s tresh; #X obj 825 250 r tresh; #X msg 138 360 method \$1; #X msg 124 333 minsize \$1; #X floatatom 198 334 5 0 0 0 - - -; #X text 239 334 minimum size of selected contours ( default : 10x10 ); #X obj 398 539 route 1; #X obj 450 539 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 174 382 clear; #X text 282 382 recalculates the pattern contour; #X obj 359 540 < 0.1; #X obj 805 21 s reset; #X obj 796 -4 t b s; #X obj 223 383 r reset; #X text 51 -140 pdp_opencv_hu_compare :: compare contours using their hu moments using CvMatchShape.; #X text 227 433 compares the contours to the pattern reference contour ; #X msg 200 408 criteria \$1; #X obj 284 409 r cdist; #X text 337 403 criteria value under which the contour is recongnized ; #X text 335 414 ( adjust to your situation : default : 0.1 ); #X obj 459 519 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144 -1 -1 0 1; #X text 477 536 criteria value; #X floatatom 377 521 10 0 0 0 - - -; #X obj 236 466 unpack f f f f f; #X text 350 466 position of detected contours; #X floatatom 259 488 5 0 0 0 - - -; #X floatatom 297 489 5 0 0 0 - - -; #X floatatom 337 488 5 0 0 0 - - -; #X floatatom 380 489 5 0 0 0 - - -; #X text 266 501 X; #X text 305 500 Y; #X text 337 500 width; #X text 378 501 height; #X text 705 489 minimum distance; #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 70 0; #X connect 11 0 5 0; #X connect 12 0 11 0; #X connect 13 0 49 0; #X connect 15 0 13 0; #X connect 15 1 54 0; #X connect 16 0 61 0; #X connect 17 0 61 0; #X connect 18 0 19 0; #X connect 19 0 15 0; #X connect 20 0 18 0; #X connect 21 0 15 0; #X connect 22 0 21 0; #X connect 23 0 22 0; #X connect 23 0 16 0; #X connect 26 0 27 0; #X connect 27 0 9 0; #X connect 28 0 59 0; #X connect 28 0 80 0; #X connect 31 0 82 0; #X connect 32 0 31 0; #X connect 32 0 34 0; #X connect 33 0 45 0; #X connect 34 0 69 0; #X connect 35 0 33 0; #X connect 37 0 33 0; #X connect 38 0 37 0; #X connect 40 0 34 0; #X connect 43 0 45 2; #X connect 45 0 49 1; #X connect 46 0 47 0; #X connect 47 0 43 0; #X connect 48 0 61 1; #X connect 49 0 7 0; #X connect 49 1 67 0; #X connect 49 2 28 0; #X connect 49 3 93 0; #X connect 51 0 68 0; #X connect 56 0 63 0; #X connect 58 0 59 1; #X connect 59 0 55 0; #X connect 59 1 56 0; #X connect 61 0 15 0; #X connect 62 0 56 0; #X connect 64 0 65 0; #X connect 65 0 15 1; #X connect 66 0 15 0; #X connect 68 0 72 0; #X connect 69 0 38 0; #X connect 71 0 43 0; #X connect 72 0 49 0; #X connect 73 0 49 0; #X connect 74 0 73 0; #X connect 76 0 77 0; #X connect 78 0 49 0; #X connect 80 0 76 0; #X connect 82 0 81 0; #X connect 82 1 35 0; #X connect 83 0 78 0; #X connect 86 0 49 0; #X connect 87 0 86 0; #X connect 90 0 80 1; #X connect 90 0 92 0; #X connect 93 1 95 0; #X connect 93 2 96 0; #X connect 93 3 97 0; #X connect 93 4 98 0;