#N canvas 931 421 818 513 10; #X obj 7 200 cnv 15 430 300 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 7 156 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577 0; #X text 16 160 Arguments:; #X obj 7 60 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577 0; #X obj 443 10 cnv 15 320 420 empty empty empty 20 12 0 14 -228992 -66577 0; #X text 50 19 Synopsis: [pix_opencv_blobtrack]; #X text 71 38 Class: pix_opencv; #X text 17 63 Description: all-in-one blobtracker; #X text 28 86 [pix_opencv_blobtrack] implements a blobtracking pipeline. This is made by a foreground detector \, a blob detector \, a blob tracker and a trajectory post processor.; #X text 30 173 none; #X obj 446 222 cnv 15 250 120 empty empty empty 20 12 0 14 -4034 -66577 0; #X obj 656 363 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 1 98 450 300 gemwin 0; #X obj 132 136 gemwin; #X obj 67 89 outlet; #X obj 67 10 inlet; #X obj 67 41 route create; #X msg 67 70 set destroy; #X msg 142 68 set create; #X msg 132 112 create \, 1; #X msg 198 112 destroy; #X msg 234 221 dimen 500 500; #X obj 295 164 loadbang; #X msg 279 190 dimen 640 480; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 0 6 0; #X connect 3 1 5 0; #X connect 3 1 7 0; #X connect 4 0 1 0; #X connect 5 0 1 0; #X connect 6 0 0 0; #X connect 7 0 0 0; #X connect 8 0 0 0; #X connect 9 0 10 0; #X connect 10 0 0 0; #X restore 661 402 pd gemwin; #X msg 661 383 create; #X text 657 362 Create window:; #X obj 454 364 pix_texture; #X obj 454 30 gemhead; #X floatatom 531 323 5 0 0 0 blob_num - -, f 5; #N canvas 1054 357 709 722 showblob 0; #X obj 187 13 inlet blobinformation; #X obj 279 316 gemlist; #X obj 279 296 t b a; #X obj 291 50 gemhead 70; #X obj 129 258 list append; #X obj 124 170 list split 2; #X obj 124 114 list append; #X obj 291 73 t b a; #X obj 158 232 t b a; #X obj 279 506 translateXYZ; #X msg 420 349 \$2; #X obj 279 356 alpha 1; #X obj 279 466 translateXYZ -0.5 -0.5 0; #X obj 279 530 scaleXYZ 0.125 0.25 0; #X msg 459 349 \$3; #X msg 420 499 \$4; #X msg 469 472 \$5; #X obj 463 328 t a a; #X obj 279 576 circle 0.5; #X obj 279 426 color 1 0 0 0.2; #X obj 279 336 separator; #X msg 499 499 \$1; #X obj 279 616 color 1 1 0 1; #X obj 158 198 list split 6; #X msg 227 166 \$2; #X obj 366 622 loadbang; #X msg 366 641 12; #X msg 521 377 \$6; #X obj 521 399 > 0; #X obj 521 420 sel 1 0; #X msg 520 441 1 0 0 0.2; #X msg 540 461 0 1 0 0.2; #X obj 279 596 translateXYZ 0.2 0.2 0; #X text 348 252 here is an example on how to display blobs with Gem ; #X obj 279 446 scaleXYZ 10.666 -8 0; #X obj 279 677 text2d; #X text 253 167 <- be careful ! the size of the cvblob matrix could change; #X text 335 184 please check second element to gets matrix width (number of value per blob); #X obj 124 136 t a a; #X connect 0 0 6 1; #X connect 1 0 20 0; #X connect 2 0 1 0; #X connect 2 1 17 0; #X connect 3 0 7 0; #X connect 4 0 23 0; #X connect 5 1 23 0; #X connect 6 0 38 0; #X connect 7 0 6 0; #X connect 7 1 1 1; #X connect 8 0 4 0; #X connect 8 1 2 0; #X connect 9 0 13 0; #X connect 10 0 9 1; #X connect 11 0 19 0; #X connect 12 0 9 0; #X connect 13 0 18 0; #X connect 14 0 9 2; #X connect 15 0 13 1; #X connect 16 0 13 2; #X connect 17 0 14 0; #X connect 17 0 10 0; #X connect 17 1 16 0; #X connect 17 1 15 0; #X connect 17 1 21 0; #X connect 17 1 27 0; #X connect 18 0 32 0; #X connect 19 0 34 0; #X connect 20 0 11 0; #X connect 21 0 35 0; #X connect 22 0 35 0; #X connect 23 0 8 0; #X connect 23 1 4 1; #X connect 24 0 23 1; #X connect 25 0 26 0; #X connect 26 0 35 1; #X connect 27 0 28 0; #X connect 28 0 29 0; #X connect 29 0 30 0; #X connect 29 1 31 0; #X connect 30 0 19 1; #X connect 31 0 19 1; #X connect 32 0 22 0; #X connect 34 0 12 0; #X connect 38 0 5 0; #X connect 38 1 24 0; #X restore 568 320 pd showblob; #X obj 454 124 pix_resize 320 240; #X obj 454 173 pix_rgba; #X obj 471 227 r \$0-properties; #X text 464 153 input format : rgba or grey; #N canvas 943 437 806 579 properties 0; #X msg 99 407 monitorStage \$1; #X msg 4 21 getModule; #X msg 4 41 getModule fg; #X msg 4 61 getModule bd; #X msg 4 81 getModule bt; #X msg 4 101 getModule btpp; #X obj 12 142 loadbang; #X msg 260 194 setModule bd BD_CC; #X msg 27 194 setModule fg FG_0S; #X msg 147 194 setModule fg FG_1; #X text 98 342 monitoring stage :; #X obj 99 359 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1 -1 0; #X text 117 358 input image; #X text 116 374 foreground mask; #X text 116 389 diplsay blobs; #X obj -35 513 s \$0-properties; #X obj -35 353 t a; #X msg -14 405 fgTrainFrames \$1; #X floatatom -14 378 5 0 0 0 - - -, f 5; #X text 72 20 post all accessibles modules and their nickname; #X text 108 56 post information of specific module and get the avaiblable variant to load; #X msg 12 160 setModule fg FG_1 \, setModule bd BD_Simple \, setModule bt CC \, setModule btpp none \, setModule bta none; #X msg 241 229 getParam fg; #X floatatom 241 257 5 0 0 0 - - -, f 5; #X msg 241 275 setParam fg NG \$1; #X text 319 222 getParam : returns all parameters for a given module; #X text 359 275 setParam : set a module parameter \, value could be float or symbol; #X msg 33 222 setModule fg FG_0; #X floatatom 241 295 5 0 0 0 - - -, f 5; #X msg 241 313 setParam fg alpha1 \$1; #X msg 192 106 setModule fg FG_0 \, setModule bd BD_Simple \, setModule bt CC \, setModule btpp none \, setModule bta none \, setParam fg alpha1 0.35; #X msg 234 411 areaThreshold \$1; #X floatatom 261 367 5 0 0 0 - - -, f 5; #X connect 0 0 15 0; #X connect 1 0 16 0; #X connect 2 0 16 0; #X connect 3 0 16 0; #X connect 4 0 16 0; #X connect 5 0 16 0; #X connect 6 0 21 0; #X connect 7 0 16 0; #X connect 8 0 16 0; #X connect 9 0 16 0; #X connect 11 0 0 0; #X connect 16 0 15 0; #X connect 17 0 15 0; #X connect 18 0 17 0; #X connect 21 0 16 0; #X connect 22 0 16 0; #X connect 23 0 24 0; #X connect 24 0 16 0; #X connect 27 0 16 0; #X connect 28 0 29 0; #X connect 29 0 16 0; #X connect 30 0 16 0; #X connect 31 0 15 0; #X connect 32 0 31 0; #X restore 595 230 pd properties; #X obj 454 70 pix_film; #X text 459 96 the bigger the image is \, the more CPU expensive the algo will be; #X text 16 202 Inlet 1 accepts a lot of messages \, here are the most usefull ones \, see [pd properties] for details.; #X text 26 232 getModule : get information about loaded modules.; #X text 26 252 setModule : set algorythm to use in each module.; #X text 26 272 monitoringStage : set the location where output image is taken (input \, foreground mask or input with tracking information) ; #X obj 550 50 openpanel; #X obj 550 32 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X text 15 321 Outlet 1 : gemstate; #X text 15 341 Outlet 2 :; #X text 35 360 blobnum : number of blobs in the current frame; #X text 36 376 blob matrix (follow the iem matrix standard) :; #X text 35 460 there are also a lots of informations about parameters and algorithms... check out the pd-properties; #X text 65 399 and for each blob : ID \, x \, y \, width \, height \, state (valid or not); #X msg 550 70 open \$1 \, auto 1; #X obj 454 395 rectangle 5.333 4; #X msg 509 70 0; #X msg 531 302 \$1; #X obj 531 281 route cvblob; #N canvas 1 104 593 300 info 0; #X obj 153 40 inlet; #X obj 153 62 route modulelist param; #X msg 55 148 fg bd bt btpp bta; #X obj 55 106 list prepend set; #X obj 55 128 list trim; #X msg 78 211 getModule; #X obj 78 236 s \$0-properties; #X text -59 148 available module :; #X msg 146 212 getParam fg; #X obj 217 108 print param; #X obj 298 96 print dumpout; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 1 1 9 0; #X connect 1 2 10 0; #X connect 3 0 4 0; #X connect 4 0 2 0; #X connect 5 0 6 0; #X connect 8 0 6 0; #X restore 645 322 pd info; #X obj 454 255 pix_opencv_blobtrack; #X text 53 388 cvblob ; #X connect 12 0 13 0; #X connect 13 0 12 0; #X connect 15 0 39 0; #X connect 16 0 24 0; #X connect 19 0 20 0; #X connect 20 0 44 0; #X connect 21 0 44 0; #X connect 24 0 19 0; #X connect 24 2 40 0; #X connect 30 0 38 0; #X connect 31 0 30 0; #X connect 38 0 24 0; #X connect 40 0 24 1; #X connect 41 0 17 0; #X connect 42 0 41 0; #X connect 42 0 18 0; #X connect 42 1 43 0; #X connect 44 0 15 0; #X connect 44 1 42 0;