#N canvas 180 115 1202 794 10; #X obj 2 42 cnv 15 430 560 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 2 -4 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 11 0 Arguments:; #X obj 2 -99 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; #X text 7 -137 Class: pix_opencv; #X text 32 17 none; #X obj 437 -158 cnv 15 710 760 empty empty empty 20 12 0 14 -228992 -66577 0; #X obj 589 283 cnv 15 550 250 empty empty empty 20 12 0 14 -24198 -66577 0; #X floatatom 693 467 5 0 0 0 - - -; #X floatatom 788 481 5 0 0 0 - - -; #X floatatom 693 581 5 0 0 0 - - -; #X floatatom 728 581 5 0 0 0 - - -; #X floatatom 765 581 5 0 0 0 - - -; #X floatatom 799 581 5 0 0 0 - - -; #X obj 693 558 unpack 0 0 0 0 0; #X obj 693 536 route 0 1 2 3 4; #X text 794 539 For each contour detected; #X text 16 50 It is useful as a motion tracker if you have well isolated silouets of the objects you want to track.; #X msg 618 293 mode \$1; #X obj 679 294 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X text 748 295 retrieval mode ( see cvFindContours ); #X obj 714 319 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X text 796 319 retrieval method ( see cvFindContours ); #X msg 647 318 method \$1; #X msg 670 341 maxmove \$1; #X floatatom 744 342 5 0 0 0 - - -; #X floatatom 768 366 5 0 0 0 - - -; #X msg 680 363 ftolerance \$1; #X text 805 364 frame tolerance for identification ( default 5 ); #X text 9 -93 pix_opencv_contours_boundingrect :: Calculates up-right bounding rectangle of all contours of a binary image.; #X text 16 89 This object considers a contour to be analyzed any group of white pixels in a black background \, for this reason you will find useful to use pdp_bgsubstract or pdp_threshold to obtain a correct input for pix_opencv_contours_boundingrect.; #X text 16 143 pix_opencv_contours_boundingrect works detecting any white areas in the input image \, it's important to set max/min values of the areas you want to detect to filter non interesting noise or areas \, also sometimes you will need to use pix_opencv_morphology to transform the contours of the shapes to be analyzed..; #X floatatom 788 518 5 0 0 0 - - -; #X text 826 519 number of contours; #X msg 695 388 nightmode \$1; #X obj 785 389 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 774 410 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 787 432 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 714 409 draw \$1; #X text 801 408 draw bounding rectangle ( default : on ); #X msg 729 430 show \$1; #X text 814 429 draw the detected contours ( default : off ); #X text 808 389 hide original image ( default : off ); #X obj 614 -145 gemhead; #X obj 599 541 pix_texture; #X obj 919 -153 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 22 454 304 gemwin 0; #X obj 67 89 outlet; #X obj 67 10 inlet; #X obj 65 41 route create; #X msg 67 70 set destroy; #X msg 182 68 set create; #N canvas 87 154 247 179 Gem.init 0; #X obj 118 46 loadbang; #X msg 118 81 reset; #X obj 118 113 outlet; #X connect 0 0 1 0; #X connect 1 0 2 0; #X restore 289 80 pd Gem.init; #X obj 162 241 gemwin; #X msg 161 188 create \, 1; #X msg 237 189 destroy; #X msg 283 161 frame 25; #X obj 164 126 t b b b; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 2 0 10 0; #X connect 2 1 4 0; #X connect 2 1 8 0; #X connect 3 0 0 0; #X connect 4 0 0 0; #X connect 7 0 6 0; #X connect 8 0 6 0; #X connect 9 0 6 0; #X connect 10 0 7 0; #X connect 10 2 9 0; #X restore 929 -109 pd gemwin; #X msg 929 -127 create; #X obj 447 541 pix_texture; #X obj 599 184 separator; #X obj 626 -118 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1 -1; #X obj 683 57 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144 -1 -1; #X floatatom 665 22 5 0 10000 1 frame# - -; #X obj 626 -89 openpanel; #X msg 626 -69 open \$1; #X obj 614 40 pix_film; #X msg 632 -26 auto \$1; #X obj 632 -44 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1; #X text 927 -147 Create window and render; #X msg 727 -43 colorspace RGBA; #X msg 733 -24 colorspace RGB; #X msg 750 -1 colorspace Grey; #X obj 727 -71 loadbang; #X obj 599 155 pix_separator; #X obj 447 187 separator; #X obj 447 158 pix_separator; #X obj 447 222 translateXYZ -2 0 0; #X obj 599 219 translateXYZ 2 0 0; #N canvas 0 22 450 300 vswitch 0; #X obj 144 263 outlet; #X obj 36 26 inlet; #X obj 260 29 inlet; #X obj 36 133 spigot; #X obj 260 141 spigot; #X obj 119 64 loadbang; #X msg 83 93 0; #X msg 113 93 1; #X msg 296 104 0; #X msg 326 104 1; #X obj 399 34 inlet; #X obj 399 67 select 0; #X connect 1 0 3 0; #X connect 2 0 4 0; #X connect 3 0 0 0; #X connect 4 0 0 0; #X connect 5 0 7 0; #X connect 5 0 8 0; #X connect 6 0 3 1; #X connect 7 0 3 1; #X connect 8 0 4 1; #X connect 9 0 4 1; #X connect 10 0 11 0; #X connect 11 0 7 0; #X connect 11 0 8 0; #X connect 11 1 9 0; #X connect 11 1 6 0; #X restore 447 96 pd vswitch; #X obj 515 96 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1 ; #X obj 447 -150 gemhead; #X msg 486 -37 device 0; #X msg 495 -6 driver 1; #X msg 472 -91 dialog; #X msg 477 -61 device /dev/dv1394-0; #X text 843 581 ( First contour ) Xorigin Yorigin Width Height; #X text 728 463 min area in pixels (default 10x10); #X text 825 479 max area in pixels (default 320x240); #X obj 447 116 pix_resize 320 240; #X text 787 341 maximum move of a countour ( default 20 ); #X floatatom 765 245 5 0 0 0 - - -; #X obj 599 252 pix_opencv_bgsubstract; #X obj 527 394 loadbang; #X msg 769 212 set; #X text 803 214 reset background reference; #X obj 599 498 pix_opencv_contours_boundingrect; #X obj 447 38 pix_video; #X text 16 268 TODO ::: in some cases i want to reuse losts tags inmediately \, a message to do it is needed; #X text 17 227 KNOWN BUGS :: in some input data all the blobs are tagged with 0 label (if maxmove is very high????) ... if i put maxmove to zero blobs are tagged in a crazy way....; #X msg 527 414 50; #X obj 837 244 loadbang; #X msg 802 246 50; #X obj 447 135 pix_rgba; #X obj 447 561 square 2; #X obj 599 561 square 2; #X text 16 308 See also pix_opencv_contour_convexhull that output also a contour rotation; #X text 8 -153 Synopsis: [pix_opencv_contours_boundingrect]; #X obj 88 419 cnv 15 100 60 empty empty DEPRECATED!! 20 12 0 18 -233017 -258113 0; #X text 74 445 please consider the use of pix_opencv_contours; #X connect 8 0 85 1; #X connect 9 0 85 2; #X connect 14 0 10 0; #X connect 14 1 11 0; #X connect 14 2 12 0; #X connect 14 3 13 0; #X connect 15 0 14 0; #X connect 18 0 85 0; #X connect 19 0 18 0; #X connect 21 0 23 0; #X connect 23 0 85 0; #X connect 24 0 85 0; #X connect 25 0 24 0; #X connect 26 0 27 0; #X connect 27 0 85 0; #X connect 34 0 85 0; #X connect 35 0 34 0; #X connect 36 0 38 0; #X connect 37 0 40 0; #X connect 38 0 85 0; #X connect 40 0 85 0; #X connect 43 0 55 0; #X connect 44 0 94 0; #X connect 46 0 47 0; #X connect 47 0 46 0; #X connect 48 0 93 0; #X connect 49 0 67 0; #X connect 50 0 53 0; #X connect 51 0 52 0; #X connect 52 0 55 1; #X connect 53 0 54 0; #X connect 54 0 55 0; #X connect 55 0 68 1; #X connect 55 2 51 0; #X connect 56 0 55 0; #X connect 57 0 56 0; #X connect 59 0 55 0; #X connect 59 0 86 0; #X connect 60 0 55 0; #X connect 61 0 55 0; #X connect 62 0 59 0; #X connect 62 0 57 0; #X connect 63 0 49 0; #X connect 64 0 66 0; #X connect 65 0 64 0; #X connect 66 0 48 0; #X connect 67 0 81 0; #X connect 68 0 78 0; #X connect 69 0 68 2; #X connect 70 0 86 0; #X connect 71 0 86 0; #X connect 72 0 86 0; #X connect 73 0 86 0; #X connect 74 0 86 0; #X connect 78 0 92 0; #X connect 80 0 81 1; #X connect 81 0 85 0; #X connect 82 0 89 0; #X connect 83 0 81 0; #X connect 85 0 44 0; #X connect 85 1 15 0; #X connect 85 2 32 0; #X connect 86 0 68 0; #X connect 89 0 8 0; #X connect 90 0 91 0; #X connect 91 0 80 0; #X connect 92 0 65 0; #X connect 92 0 63 0;