aboutsummaryrefslogtreecommitdiff
path: root/help
diff options
context:
space:
mode:
Diffstat (limited to 'help')
-rw-r--r--help/Makefile.am47
l---------help/model1
-rw-r--r--help/pix_opencv_athreshold-help.pd188
-rw-r--r--help/pix_opencv_backgroundsubtractor-help.pd455
-rw-r--r--help/pix_opencv_bgstats-help.pd150
-rw-r--r--help/pix_opencv_bgsubstract-help.pd158
-rw-r--r--help/pix_opencv_blobtrack-help.pd279
-rw-r--r--help/pix_opencv_calibration-help.pd258
-rw-r--r--help/pix_opencv_camshift-help.pd207
-rw-r--r--help/pix_opencv_clahe-help.pd139
-rw-r--r--help/pix_opencv_colorfilt-help.pd164
-rw-r--r--help/pix_opencv_contours-help.pd731
-rw-r--r--help/pix_opencv_contours_boundingrect-help.pd255
-rw-r--r--help/pix_opencv_contours_convexhull-help.pd181
-rw-r--r--help/pix_opencv_contours_convexity-help.pd191
-rw-r--r--help/pix_opencv_dft-help.pd157
-rw-r--r--help/pix_opencv_distrans-help.pd162
-rw-r--r--help/pix_opencv_edge-help.pd144
-rw-r--r--help/pix_opencv_facetracker-help.pd415
-rw-r--r--help/pix_opencv_findchessboardcorners-help.pd185
-rw-r--r--help/pix_opencv_floodfill-help.pd209
-rw-r--r--help/pix_opencv_haarcascade-help.pd204
-rw-r--r--help/pix_opencv_hist_compare-help.pd168
-rw-r--r--help/pix_opencv_hough_circles-help.pd191
-rw-r--r--help/pix_opencv_hough_lines-help.pd213
-rw-r--r--help/pix_opencv_hu_compare-help.pd240
-rw-r--r--help/pix_opencv_hu_moments-help.pd147
-rw-r--r--help/pix_opencv_knear-help.pd94
-rw-r--r--help/pix_opencv_laplace-help.pd153
-rw-r--r--help/pix_opencv_lk-help.pd242
-rw-r--r--help/pix_opencv_matchshape-help.pd103
-rw-r--r--help/pix_opencv_morphology-help.pd163
-rw-r--r--help/pix_opencv_motempl-help.pd231
-rw-r--r--help/pix_opencv_of_bm-help.pd214
-rw-r--r--help/pix_opencv_of_hs-help.pd207
-rw-r--r--help/pix_opencv_of_lk-help.pd205
-rw-r--r--help/pix_opencv_opticalflow-help.pd91
-rw-r--r--help/pix_opencv_pgh_compare-help.pd225
-rw-r--r--help/pix_opencv_surf-help.pd220
-rw-r--r--help/pix_opencv_threshold-help.pd169
-rw-r--r--help/pix_opencv_trackKnn-help.pd275
-rw-r--r--help/pix_opencv_warpperspective-help.pd119
42 files changed, 8550 insertions, 0 deletions
diff --git a/help/Makefile.am b/help/Makefile.am
new file mode 100644
index 0000000..88ae819
--- /dev/null
+++ b/help/Makefile.am
@@ -0,0 +1,47 @@
+AUTOMAKE_OPTIONS = foreign
+
+SUFFIXES = .pd
+
+pix_opencvhelpdir=$(pkglibdir)
+
+dist_pix_opencvhelp_DATA = \
+ pix_opencv_athreshold-help.pd \
+ pix_opencv_backgroundsubtractor-help.pd \
+ pix_opencv_bgstats-help.pd \
+ pix_opencv_bgsubstract-help.pd \
+ pix_opencv_blobtrack-help.pd \
+ pix_opencv_calibration-help.pd \
+ pix_opencv_camshift-help.pd \
+ pix_opencv_clahe-help.pd \
+ pix_opencv_colorfilt-help.pd \
+ pix_opencv_contours_boundingrect-help.pd \
+ pix_opencv_contours_convexhull-help.pd \
+ pix_opencv_contours_convexity-help.pd \
+ pix_opencv_contours-help.pd \
+ pix_opencv_dft-help.pd \
+ pix_opencv_distrans-help.pd \
+ pix_opencv_edge-help.pd \
+ pix_opencv_facetracker-help.pd \
+ pix_opencv_findchessboardcorners-help.pd \
+ pix_opencv_floodfill-help.pd \
+ pix_opencv_haarcascade-help.pd \
+ pix_opencv_hist_compare-help.pd \
+ pix_opencv_hough_circles-help.pd \
+ pix_opencv_hough_lines-help.pd \
+ pix_opencv_hu_compare-help.pd \
+ pix_opencv_hu_moments-help.pd \
+ pix_opencv_knear-help.pd \
+ pix_opencv_laplace-help.pd \
+ pix_opencv_lk-help.pd \
+ pix_opencv_matchshape-help.pd \
+ pix_opencv_morphology-help.pd \
+ pix_opencv_motempl-help.pd \
+ pix_opencv_of_bm-help.pd \
+ pix_opencv_of_hs-help.pd \
+ pix_opencv_of_lk-help.pd \
+ pix_opencv_opticalflow-help.pd \
+ pix_opencv_pgh_compare-help.pd \
+ pix_opencv_surf-help.pd \
+ pix_opencv_threshold-help.pd \
+ pix_opencv_trackKnn-help.pd \
+ pix_opencv_warpperspective-help.pd
diff --git a/help/model b/help/model
new file mode 120000
index 0000000..bce1528
--- /dev/null
+++ b/help/model
@@ -0,0 +1 @@
+../model/ \ No newline at end of file
diff --git a/help/pix_opencv_athreshold-help.pd b/help/pix_opencv_athreshold-help.pd
new file mode 100644
index 0000000..61afeba
--- /dev/null
+++ b/help/pix_opencv_athreshold-help.pd
@@ -0,0 +1,188 @@
+#N canvas 67 259 976 687 10;
+#X obj -362 59 cnv 15 430 470 empty empty empty 20 12 0 14 -233017
+-66577 0;
+#X obj -362 13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text -353 17 Arguments:;
+#X obj -363 -83 cnv 15 430 90 empty empty empty 20 12 0 14 -233017
+-66577 0;
+#X text -332 37 none;
+#X obj 74 -140 cnv 15 510 670 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 250 -136 gemhead;
+#X obj 234 459 pix_texture;
+#X obj 234 478 square 2;
+#X obj 356 452 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 366 496 pd gemwin;
+#X msg 366 478 destroy;
+#X obj 79 463 pix_texture;
+#X obj 79 483 square 2;
+#X obj 234 171 separator;
+#X obj 262 -109 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 319 66 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 301 31 5 0 10000 1 frame# - -;
+#X obj 262 -80 openpanel;
+#X msg 262 -60 open \$1;
+#X obj 250 49 pix_film;
+#X msg 268 -17 auto \$1;
+#X obj 268 -35 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 227 217 cnv 15 350 230 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 364 458 Create window and render;
+#X obj 234 417 pix_opencv_athreshold;
+#X floatatom 393 388 5 0 0 0 - - -;
+#X msg 288 326 mode \$1;
+#X floatatom 390 360 5 0 0 0 - - -;
+#X text 426 388 ( default 3 );
+#X msg 264 240 method \$1;
+#X msg 286 287 dim \$1;
+#X floatatom 337 290 5 0 0 0 - - -;
+#X text -344 367 written by Yves Degoyon ( ydegoyon@gmail.com );
+#X msg 363 -34 colorspace RGBA;
+#X msg 378 -16 colorspace RGB;
+#X msg 388 4 colorspace Grey;
+#X obj 363 -62 loadbang;
+#X obj 234 142 pix_separator;
+#X obj 79 174 separator;
+#X obj 79 145 pix_separator;
+#X obj 79 199 translateXYZ -2 0 0;
+#X obj 234 196 translateXYZ 2 0 0;
+#N canvas 115 397 321 254 vswitch 0;
+#X obj -109 160 outlet;
+#X obj -109 31 inlet;
+#X obj -5 31 inlet;
+#X obj 40 31 inlet;
+#X obj -109 88 spigot 1;
+#X obj -5 90 spigot 0;
+#X obj -64 67 == 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 1;
+#X connect 3 0 6 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 1;
+#X restore 79 84 pd vswitch;
+#X obj 147 85 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 79 52 pix_video;
+#X obj 79 -136 gemhead;
+#X msg 118 -23 device 0;
+#X msg 127 8 driver 1;
+#X msg 104 -77 dialog;
+#X msg 109 -47 device /dev/dv1394-0;
+#X text 373 289 value to correct the theshold;
+#X text 390 346 MaxValue (default 255);
+#X text 367 325 inverse mode ( default 0 );
+#X text -356 -79 Thresholding is used to segment an image by setting
+all pixels whose intensity values are above a threshold to a foreground
+value and all the remaining pixels to a background value.;
+#X text -354 66 Whereas the conventional thresholding operator uses
+a global threshold for all pixels \, adaptive thresholding changes
+the threshold dynamically over the image. This more sophisticated version
+of thresholding can accommodate changing lighting conditions in the
+image \, e.g. those occurring as a result of a strong illumination
+gradient or shadows.;
+#X text -325 205 - zero otherwise;
+#X text -351 168 Adaptive thresholding sets a pixel dst(x \, y) value
+to:;
+#X text -325 190 - MaxValue (see MaxValue inlet) if src(x \, y) > T(x
+\, y);
+#X text -347 238 Where T(x \, y) is a threshold calculated individually
+for each pixel. For the method ADAPTIVE_THRESH_MEAN_C the threshold
+value is the mean of a blockSize x blockSize (see blocksize inlet)
+neighborhood of (x \, y) \, minus dim parameter value (see dim message).
+;
+#X text -347 314 For the method ADAPTIVE_THRESH_GAUSSIAN_C the threshold
+value is the weighted sum (i.e. cross-correlation with a Gaussian window)
+of a blockSize x blockSize neighborhood of (x \, y) \, minus dim parameter
+value.;
+#X text 391 374 blockSize;
+#X obj 338 241 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 256 218 Thresholding method ( default 0 );
+#X obj 347 327 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 356 235 0 = CV_ADAPTIVE_THRESH_MEAN_C;
+#X text 356 245 1 = CV_ADAPTIVE_THRESH_GAUSSIAN_C;
+#X obj 79 110 pix_rgba;
+#X text -356 -103 pix_opencv_athreshold :;
+#X connect 6 0 20 0;
+#X connect 7 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
+#X connect 12 0 13 0;
+#X connect 14 0 42 0;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 20 1;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 43 1;
+#X connect 20 2 16 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 25 0 7 0;
+#X connect 26 0 25 2;
+#X connect 27 0 25 0;
+#X connect 28 0 25 1;
+#X connect 30 0 25 0;
+#X connect 31 0 25 0;
+#X connect 32 0 31 0;
+#X connect 34 0 20 0;
+#X connect 34 0 45 0;
+#X connect 35 0 20 0;
+#X connect 36 0 20 0;
+#X connect 37 0 34 0;
+#X connect 37 0 22 0;
+#X connect 38 0 14 0;
+#X connect 39 0 41 0;
+#X connect 40 0 39 0;
+#X connect 41 0 12 0;
+#X connect 42 0 25 0;
+#X connect 43 0 67 0;
+#X connect 44 0 43 2;
+#X connect 45 0 43 0;
+#X connect 46 0 45 0;
+#X connect 47 0 45 0;
+#X connect 48 0 45 0;
+#X connect 49 0 45 0;
+#X connect 50 0 45 0;
+#X connect 62 0 30 0;
+#X connect 64 0 27 0;
+#X connect 67 0 40 0;
+#X connect 67 0 38 0;
diff --git a/help/pix_opencv_backgroundsubtractor-help.pd b/help/pix_opencv_backgroundsubtractor-help.pd
new file mode 100644
index 0000000..c9c88b5
--- /dev/null
+++ b/help/pix_opencv_backgroundsubtractor-help.pd
@@ -0,0 +1,455 @@
+#N canvas 918 248 963 626 10;
+#X obj 20 43 cnv 15 430 380 empty empty empty 20 12 0 14 -228856 -66577
+0;
+#X obj 20 -3 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X obj 19 -99 cnv 15 430 90 empty empty empty 20 12 0 14 -228856 -66577
+0;
+#X text 24 -135 Class: pix_opencv;
+#X obj 455 -176 cnv 15 500 600 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 488 261 pix_texture;
+#X obj 665 230 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 3 81 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 342 184 destroy;
+#X msg 283 161 frame 25;
+#X obj 164 126 t b b b;
+#X msg 161 189 dimen 640 560 \, create \, 1;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 9 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 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 10 0;
+#X connect 9 2 8 0;
+#X connect 10 0 6 0;
+#X restore 675 276 pd gemwin;
+#X msg 675 256 destroy;
+#X text 673 236 Create window and render;
+#X obj 485 -34 cnv 15 400 260 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 488 282 rectangle 4 3;
+#X text 40 15 <threshold> <initFrames>;
+#X text 29 1 Arguments: (optional);
+#X text 62 343 see also :;
+#X obj 104 367 pix_opencv_bgstats;
+#X obj 104 387 pix_threshold;
+#X msg 511 18 algo \$1;
+#N canvas 320 153 576 492 parameters 1;
+#X obj 21 21 cnv 15 400 80 empty empty readProperties 20 12 0 14 -233017
+-66577 0;
+#X obj 29 47 hradio 15 1 0 4 \$0-propreadId \$0-propreadId empty 0
+-8 0 10 -262144 -1 -1 0;
+#X obj 30 70 cnv 15 260 20 empty \$0-propreadName <none> 10 9 0 14
+-203904 -66577 0;
+#N canvas 1296 443 597 537 PropertyLogic 0;
+#N canvas 570 124 774 460 id2property 0;
+#X obj 353 106 r \$0-info;
+#X obj 405 176 t b f;
+#X obj 353 174 list;
+#X obj 353 219 list prepend;
+#X msg 353 196 \$1;
+#X obj 353 239 t l l;
+#X obj 95 197 list prepend;
+#X obj 95 69 inlet readID;
+#X obj 225 70 inlet writeID;
+#X obj 180 378 outlet readName;
+#X obj 310 356 outlet writeName;
+#X obj 95 176 t b f;
+#X obj 95 219 list split;
+#X obj 180 316 symbol;
+#X msg 180 291 symbol \$1;
+#X obj 225 197 list prepend;
+#X obj 225 176 t b f;
+#X obj 225 219 list split;
+#X obj 310 316 symbol;
+#X msg 310 291 symbol \$1;
+#X obj 95 91 route float;
+#X obj 225 92 route float;
+#X msg 432 333 number \$1;
+#X obj 432 353 s \$0-propreadId;
+#X obj 420 376 s \$0-propwriteId;
+#X obj 460 275 loadbang;
+#X obj 123 258 route bang;
+#X obj 253 258 route bang;
+#X obj 353 152 route paramList params;
+#X msg 460 296 1;
+#X connect 0 0 28 0;
+#X connect 1 0 3 1;
+#X connect 1 1 22 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 1;
+#X connect 5 0 15 1;
+#X connect 5 1 3 1;
+#X connect 6 0 12 0;
+#X connect 7 0 20 0;
+#X connect 8 0 21 0;
+#X connect 11 0 6 0;
+#X connect 11 1 12 1;
+#X connect 12 1 26 0;
+#X connect 13 0 9 0;
+#X connect 14 0 13 0;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 16 1 17 1;
+#X connect 17 1 27 0;
+#X connect 18 0 10 0;
+#X connect 19 0 18 0;
+#X connect 20 0 11 0;
+#X connect 21 0 16 0;
+#X connect 22 0 23 0;
+#X connect 22 0 24 0;
+#X connect 25 0 29 0;
+#X connect 26 1 14 0;
+#X connect 27 1 19 0;
+#X connect 28 0 2 0;
+#X connect 28 1 1 0;
+#X connect 29 0 22 0;
+#X restore 188 192 pd id2property;
+#X obj 350 429 list trim;
+#X obj 350 451 t b a;
+#N canvas 645 504 450 300 getProp 0;
+#X obj 44 177 s \$0-propreadName;
+#X msg 44 156 label \$1;
+#X msg 165 156 get \$1;
+#X obj 44 81 inlet;
+#X obj 165 178 outlet;
+#X obj 290 57 r \$0-info;
+#N canvas 3 50 450 300 sroute 0;
+#X obj 73 12 inlet;
+#X obj 312 9 inlet;
+#X obj 73 113 outlet;
+#X obj 73 34 list split 1;
+#X obj 73 56 select s;
+#X obj 73 78 list prepend;
+#X connect 0 0 3 0;
+#X connect 1 0 4 1;
+#X connect 3 0 4 0;
+#X connect 3 1 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X restore 290 113 pd sroute;
+#X obj 44 123 t s s s;
+#X msg 290 226 label \$1;
+#X obj 290 247 s \$0-propreadValue;
+#X obj 290 135 route float;
+#X obj 290 157 makefilename %g;
+#X obj 106 29 loadbang;
+#X obj 106 51 t b b;
+#X msg 106 73 symbol <none>;
+#X msg 196 74 symbol --;
+#X obj 353 181 symbol;
+#X obj 290 79 route param;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 7 0;
+#X connect 5 0 17 0;
+#X connect 6 0 10 0;
+#X connect 7 0 1 0;
+#X connect 7 1 2 0;
+#X connect 7 2 6 1;
+#X connect 8 0 9 0;
+#X connect 10 0 11 0;
+#X connect 10 1 16 0;
+#X connect 11 0 8 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 1 15 0;
+#X connect 14 0 1 0;
+#X connect 15 0 8 0;
+#X connect 16 0 8 0;
+#X connect 17 0 6 0;
+#X restore 319 315 pd getProp;
+#X obj 172 158 r \$0-propreadId;
+#N canvas 568 213 450 467 setProp 0;
+#X msg 44 156 label \$1;
+#X msg 165 156 get \$1;
+#X obj 44 31 inlet;
+#X obj 218 426 outlet;
+#X obj 290 57 r \$0-info;
+#N canvas 4 50 450 300 sroute 0;
+#X obj 73 12 inlet;
+#X obj 312 9 inlet;
+#X obj 73 113 outlet;
+#X obj 73 34 list split 1;
+#X obj 73 56 select s;
+#X obj 73 78 list prepend;
+#X connect 0 0 3 0;
+#X connect 1 0 4 1;
+#X connect 3 0 4 0;
+#X connect 3 1 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X restore 290 113 pd sroute;
+#X obj 290 135 route float;
+#X obj 44 177 s \$0-propwriteName;
+#X obj 290 247 s \$0-propwriteValue;
+#X msg 290 226 set \$1;
+#X obj 50 276 r \$0-propwriteValue;
+#X obj 50 298 route float;
+#X obj 50 320 pack 0 s;
+#X msg 50 342 set \$2 \$1;
+#X obj 44 73 t s s s s;
+#X obj 127 27 loadbang;
+#X obj 127 49 t b b;
+#X msg 127 71 symbol <none>;
+#X obj 290 79 route param;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 2 0 14 0;
+#X connect 4 0 18 0;
+#X connect 5 0 6 0;
+#X connect 6 0 9 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 14 0 0 0;
+#X connect 14 1 1 0;
+#X connect 14 2 5 1;
+#X connect 14 3 12 1;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 0 0;
+#X connect 18 0 5 0;
+#X restore 199 315 pd setProp;
+#X obj 199 426 list trim;
+#X obj 199 448 t b a;
+#X obj 199 339 route get set;
+#X obj 199 477 s \$0-propset;
+#X obj 350 480 s \$0-propget;
+#X obj 54 38 inlet;
+#X obj 54 66 s \$0-ctl;
+#X obj 282 158 r \$0-propwriteId;
+#X obj 199 407 list prepend set;
+#X obj 350 407 list prepend set;
+#X obj 349 361 list prepend setParam;
+#X obj 199 360 list prepend getParam;
+#X connect 0 0 3 0;
+#X connect 0 1 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 10 0;
+#X connect 2 1 10 0;
+#X connect 3 0 8 0;
+#X connect 4 0 0 0;
+#X connect 5 0 8 0;
+#X connect 6 0 7 0;
+#X connect 7 0 9 0;
+#X connect 7 1 9 0;
+#X connect 8 0 17 0;
+#X connect 8 1 16 0;
+#X connect 11 0 12 0;
+#X connect 13 0 0 1;
+#X connect 14 0 6 0;
+#X connect 15 0 1 0;
+#X connect 16 0 14 0;
+#X connect 17 0 15 0;
+#X restore 31 446 pd PropertyLogic;
+#X obj 300 70 cnv 15 100 20 empty \$0-propreadValue -- 10 9 0 14 -261234
+-66577 0;
+#X obj 21 111 cnv 15 400 80 empty empty writeProperties 20 12 0 14
+-233017 -66577 0;
+#X obj 29 137 hradio 15 1 0 4 \$0-propwriteId \$0-propwriteId empty
+0 -8 0 10 -262144 -1 -1 0;
+#X obj 30 160 cnv 15 260 20 empty \$0-propwriteName <none> 10 9 0 14
+-203904 -66577 0;
+#X obj 301 160 nbx 5 20 -1e+37 1e+37 0 0 \$0-propwriteValue \$0-propwriteValue
+empty 0 -8 0 14 -204786 -1 -1 0 256;
+#X msg 73 412 setParam noiseSigma 137;
+#X obj 56 314 r \$0-propget;
+#X obj 73 392 r \$0-propset;
+#X msg 77 360 get Hue Saturation;
+#X text 198 360 you can query several properties at once;
+#X text 62 257 NOTE that propertynames are always single symbols that
+might contain spaces (and other weird characters);
+#X text 98 203 INIT: query names of all available properties;
+#X msg 31 203 enumParams;
+#X msg 56 335 getParam noiseSigma;
+#X text 59 224 this will return a list of parameters through the "info"
+outlet of [pix_opencv_backgroundsubtractor].;
+#X text 135 315 query a (readable) property via a message "getParam
+<propname>", f 65;
+#X text 150 392 set a (writable) property via a message "setParam <prop>
+<value>", f 68;
+#X msg 45 292 paramHelp;
+#X text 108 291 print parameters help in console;
+#X connect 9 0 3 0;
+#X connect 10 0 17 0;
+#X connect 11 0 9 0;
+#X connect 12 0 3 0;
+#X connect 16 0 3 0;
+#X connect 17 0 3 0;
+#X connect 21 0 3 0;
+#X restore 745 76 pd parameters;
+#X obj 521 109 r \$0-ctl;
+#X obj 671 201 s \$0-info;
+#N canvas 782 389 504 512 src 0;
+#X obj 302 -79 gemhead;
+#X obj 314 -52 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 359 34 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 353 18 5 0 10000 1 frame# - -, f 5;
+#X obj 314 -23 openpanel;
+#X obj 302 36 pix_film;
+#N canvas 1 250 299 199 vswitch 0;
+#X obj 36 128 outlet;
+#X obj 36 26 inlet;
+#X obj 130 26 inlet;
+#X obj 175 27 inlet;
+#X obj 81 61 == 0;
+#X obj 36 83 spigot 1;
+#X obj 130 84 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 62 118 pd vswitch;
+#X obj 163 -188 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
+0 1;
+#X obj 62 45 pix_video;
+#X obj 62 -79 gemhead;
+#X text 180 -190 switch source (camera / film);
+#X msg 314 -3 open \$1 \, auto 1;
+#X obj 173 -253 loadbang;
+#X msg 173 -230 0;
+#X obj 169 -123 == 0;
+#X obj 130 -284 inlet;
+#X text 168 -282 src selection : 0 = camera \, 1 = file;
+#X obj 345 -113 sel 1;
+#X obj 62 140 outlet;
+#X obj 169 -144 t a a a a;
+#X connect 0 0 5 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 1;
+#X connect 4 0 11 0;
+#X connect 5 0 6 1;
+#X connect 5 2 2 0;
+#X connect 6 0 18 0;
+#X connect 7 0 19 0;
+#X connect 8 0 6 0;
+#X connect 9 0 8 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 13 0 7 0;
+#X connect 14 0 9 0;
+#X connect 15 0 7 0;
+#X connect 17 0 1 0;
+#X connect 19 0 14 0;
+#X connect 19 1 0 0;
+#X connect 19 2 6 2;
+#X connect 19 3 17 0;
+#X restore 488 -128 pd src;
+#X obj 488 -165 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#N canvas 1 110 450 300 gray/rgba 0;
+#X obj 62 36 pix_grey;
+#X obj 121 36 pix_rgba;
+#X obj 62 11 spigot 1;
+#X obj 107 -34 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 125 -37 switch color mode ( grey / rgba );
+#X obj 107 -11 == 0;
+#X obj 121 11 spigot 0;
+#X obj 62 98 t a;
+#X obj 121 61 alpha;
+#X obj 62 -92 inlet;
+#X obj 62 120 outlet;
+#X obj 107 -60 inlet;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 0 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 1;
+#X connect 5 0 2 1;
+#X connect 6 0 1 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 2 0;
+#X connect 9 0 6 0;
+#X connect 11 0 3 0;
+#X restore 488 -69 pd gray/rgba;
+#X obj 557 -105 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X text 575 -105 gray;
+#X text 575 -91 RGBA;
+#X text 504 -166 camera;
+#X text 504 -151 video file;
+#X msg 504 -25 algo;
+#X obj 671 161 t a a;
+#X obj 698 181 print info;
+#X obj 511 0 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144 -1
+-1 1;
+#X text 561 18 choose algo by id;
+#X msg 518 43 algo BackgroundSubtractor.MOG;
+#X text 700 43 choose algo by name;
+#X obj 488 136 pix_opencv_backgroundsubtractor;
+#X msg 521 85 cpuMode \$1;
+#X obj 521 65 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 25 -156 Synopsis: [pix_opencv_backgroundsubtractor];
+#X text 26 -90 Description: pix_opencv_backgroundsubtractor extracts
+foreground using different algorithms;
+#X text 541 -24 report available algorithm on the right outlet;
+#X text 32 54 input : message : algo : without arg \, reports the available
+algorithms;
+#X text 32 84 input : message : algo <float> choose an algo by id;
+#X text 32 98 input : message : algo <symbol> choose an algo by name
+;
+#X text 32 118 input : message : cpuMode <symbol> force CPU mode;
+#X text 27 -56 It uses OpenCL when it's available.;
+#X text 32 138 input : message : enumParams : query parameters name
+and value of available;
+#X text 40 258 for more about the GMG algorithm please refer to : A.
+Godbehere \, A. Matsukawa \, K. Goldberg \, "Visual Tracking of Human
+Visitors under Variable-Lighting Conditions for a Responsiven Audio
+Art Installation" \, American Control Conference \, 2012 \,;
+#X text 32 168 input : message : paramHelp : print parameters help
+in the Pd's console (not filled for all parameters);
+#X text 32 198 input : message : getParam <symbol> : get parameter
+value;
+#X text 32 213 input : message : setParam <symbol> <float> : set paramter
+value;
+#X connect 5 0 11 0;
+#X connect 7 0 8 0;
+#X connect 8 0 7 0;
+#X connect 17 0 36 0;
+#X connect 19 0 36 0;
+#X connect 21 0 23 0;
+#X connect 22 0 21 0;
+#X connect 23 0 36 0;
+#X connect 24 0 23 1;
+#X connect 29 0 36 0;
+#X connect 30 0 20 0;
+#X connect 30 1 31 0;
+#X connect 32 0 17 0;
+#X connect 34 0 36 0;
+#X connect 36 0 5 0;
+#X connect 36 1 30 0;
+#X connect 37 0 36 0;
+#X connect 38 0 37 0;
diff --git a/help/pix_opencv_bgstats-help.pd b/help/pix_opencv_bgstats-help.pd
new file mode 100644
index 0000000..9413df2
--- /dev/null
+++ b/help/pix_opencv_bgstats-help.pd
@@ -0,0 +1,150 @@
+#N canvas 94 527 960 504 10;
+#X obj -7 39 cnv 15 430 270 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj -7 -7 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 2 -3 Arguments:;
+#X obj -8 -103 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text -3 -148 Class: pix_opencv;
+#X text 23 17 none;
+#X obj 431 -180 cnv 15 510 490 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 591 232 pix_texture;
+#X obj 591 250 square 2;
+#X obj 714 229 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 67 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 192 276 gemwin;
+#X msg 191 223 create \, 1;
+#X msg 267 224 destroy;
+#X msg 313 196 frame 25;
+#X obj 194 186 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 726 275 pd gemwin;
+#X msg 726 251 create;
+#X text 722 231 Create window and render;
+#X obj 440 231 pix_texture;
+#X obj 440 249 square 2;
+#X obj 585 173 cnv 15 200 50 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 591 203 pix_opencv_bgstats;
+#X text 5 -90 pix_opencv_bgstats : background and foreground extraction
+using a statitical method.;
+#X obj 677 -168 gemhead;
+#X obj 591 127 separator;
+#X obj 689 -141 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 746 34 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 728 -1 5 0 10000 1 frame# - -;
+#X obj 689 -112 openpanel;
+#X msg 689 -92 open \$1;
+#X obj 677 17 pix_film;
+#X msg 695 -49 auto \$1;
+#X obj 695 -67 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 790 -66 colorspace RGBA;
+#X msg 801 -46 colorspace RGB;
+#X msg 810 -26 colorspace Grey;
+#X obj 790 -94 loadbang;
+#X obj 591 108 pix_separator;
+#X obj 440 130 separator;
+#X obj 440 111 pix_separator;
+#X obj 440 150 translateXYZ -2 0 0;
+#X obj 591 147 translateXYZ 2 0 0;
+#N canvas 3 83 450 300 vswitch 0;
+#X obj 36 140 outlet;
+#X obj 36 26 inlet;
+#X obj 130 25 inlet;
+#X obj 175 25 inlet;
+#X obj 36 103 spigot 1;
+#X obj 130 104 spigot 0;
+#X obj 81 78 == 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 5 1;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 1;
+#X restore 440 59 pd vswitch;
+#X obj 508 59 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 440 15 pix_video;
+#X obj 440 -169 gemhead;
+#X msg 479 -60 device 0;
+#X msg 488 -29 driver 1;
+#X msg 465 -114 dialog;
+#X msg 470 -84 device /dev/dv1394-0;
+#X obj 440 38 pix_resize 160 120;
+#X text 6 51 Objects disappear from the background after a certain
+amount of time of presence \, they are then considered as background.
+;
+#X msg 609 179 reset;
+#X text 655 180 reset the background;
+#X obj 440 83 pix_rgba;
+#X text 6 116 written by Yves Degoyon ( ydegoyon.gmail.com );
+#X text -2 -164 Synopsis: [pix_opencv_bgstats];
+#X connect 7 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
+#X connect 13 0 14 0;
+#X connect 16 0 7 0;
+#X connect 18 0 25 0;
+#X connect 19 0 36 0;
+#X connect 20 0 23 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 1;
+#X connect 23 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 37 1;
+#X connect 25 2 21 0;
+#X connect 26 0 25 0;
+#X connect 27 0 26 0;
+#X connect 28 0 25 0;
+#X connect 28 0 39 0;
+#X connect 29 0 25 0;
+#X connect 30 0 25 0;
+#X connect 31 0 28 0;
+#X connect 31 0 27 0;
+#X connect 32 0 19 0;
+#X connect 33 0 35 0;
+#X connect 34 0 33 0;
+#X connect 35 0 13 0;
+#X connect 36 0 16 0;
+#X connect 37 0 49 0;
+#X connect 38 0 37 2;
+#X connect 39 0 45 0;
+#X connect 40 0 39 0;
+#X connect 41 0 39 0;
+#X connect 42 0 39 0;
+#X connect 43 0 39 0;
+#X connect 44 0 39 0;
+#X connect 45 0 37 0;
+#X connect 47 0 16 0;
+#X connect 49 0 34 0;
+#X connect 49 0 32 0;
diff --git a/help/pix_opencv_bgsubstract-help.pd b/help/pix_opencv_bgsubstract-help.pd
new file mode 100644
index 0000000..fef54b4
--- /dev/null
+++ b/help/pix_opencv_bgsubstract-help.pd
@@ -0,0 +1,158 @@
+#N canvas 597 253 985 540 10;
+#X obj 17 17 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 17 -29 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 26 -25 Arguments:;
+#X obj 17 -124 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 22 -162 Class: pix_opencv;
+#X text 47 -5 none;
+#X obj 459 -182 cnv 15 510 520 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 611 168 cnv 15 280 80 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 744 211 5 0 0 0 - - -, f 5;
+#X obj 615 228 pix_opencv_bgsubstract;
+#X msg 627 172 set;
+#X text 663 172 set the background;
+#X text 741 195 threshold (default 13);
+#X obj 641 -173 gemhead;
+#X obj 615 255 pix_texture;
+#X obj 615 274 square 2;
+#X obj 741 259 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 50 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 751 303 pd gemwin;
+#X msg 751 285 destroy;
+#X obj 464 253 pix_texture;
+#X obj 464 272 square 2;
+#X obj 615 121 separator;
+#X obj 653 -146 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 710 29 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 692 -6 5 0 10000 1 frame# - -, f 5;
+#X obj 653 -117 openpanel;
+#X msg 653 -97 open \$1;
+#X obj 641 12 pix_film;
+#X msg 659 -54 auto \$1;
+#X obj 659 -72 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 749 265 Create window and render;
+#X msg 754 -71 colorspace RGBA;
+#X msg 765 -52 colorspace RGB;
+#X msg 772 -32 colorspace Grey;
+#X obj 754 -99 loadbang;
+#X obj 615 100 pix_separator;
+#X obj 464 121 separator;
+#X obj 464 101 pix_separator;
+#X obj 464 141 translateXYZ -2 0 0;
+#X obj 615 141 translateXYZ 2 0 0;
+#N canvas 1 168 274 158 vswitch 0;
+#X obj 36 138 outlet;
+#X obj 36 26 inlet;
+#X obj 100 29 inlet;
+#X obj 153 29 inlet;
+#X obj 89 69 == 0;
+#X obj 36 101 spigot 1;
+#X obj 100 101 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 464 58 pd vswitch;
+#X obj 532 58 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 464 10 pix_video;
+#X obj 464 -175 gemhead;
+#X msg 503 -65 device 0;
+#X msg 512 -34 driver 1;
+#X msg 489 -119 dialog;
+#X msg 494 -89 device /dev/dv1394-0;
+#X obj 464 78 pix_rgba;
+#X text 24 219 written by Yves Degoyon ( ydegoyon@gmail.com );
+#X text 23 -178 Synopsis: [pix_opencv_bgsubstract];
+#X text 22 37 Useful if you want to detect dynamic objects over a static
+background.;
+#X text 22 84 This object takes an image as a background reference
+and compare each incomming frame with that. On the output you get a
+b&w image \, black pixels are considered as background and white pixels
+as foreground.;
+#X text 21 144 pix_opencv_bgsubstract works comparing color values
+of each pixel \, so it can fail if the foreground object has the same
+color than the background \, and also if the light conditions or the
+shadows change since you SET the background image.;
+#X text 27 -107 pix_opencv_bgsubstract :: A very simple background
+substractor and binarization object.;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 10 0 9 0;
+#X connect 13 0 27 0;
+#X connect 14 0 15 0;
+#X connect 17 0 18 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 21 0 39 0;
+#X connect 22 0 25 0;
+#X connect 23 0 24 0;
+#X connect 24 0 27 1;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 40 1;
+#X connect 27 2 23 0;
+#X connect 28 0 27 0;
+#X connect 29 0 28 0;
+#X connect 31 0 27 0;
+#X connect 31 0 42 0;
+#X connect 32 0 27 0;
+#X connect 33 0 27 0;
+#X connect 34 0 31 0;
+#X connect 34 0 29 0;
+#X connect 35 0 21 0;
+#X connect 36 0 38 0;
+#X connect 37 0 36 0;
+#X connect 38 0 19 0;
+#X connect 39 0 9 0;
+#X connect 40 0 48 0;
+#X connect 41 0 40 2;
+#X connect 42 0 40 0;
+#X connect 43 0 42 0;
+#X connect 44 0 42 0;
+#X connect 45 0 42 0;
+#X connect 46 0 42 0;
+#X connect 47 0 42 0;
+#X connect 48 0 37 0;
+#X connect 48 0 35 0;
diff --git a/help/pix_opencv_blobtrack-help.pd b/help/pix_opencv_blobtrack-help.pd
new file mode 100644
index 0000000..73c95b0
--- /dev/null
+++ b/help/pix_opencv_blobtrack-help.pd
@@ -0,0 +1,279 @@
+#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 <module name> : returns all parameters for
+a given module;
+#X text 359 275 setParam <module name> <param name> <value> : 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 <mtx rows (nb of blobs)> <mtx cols (6)>;
+#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;
diff --git a/help/pix_opencv_calibration-help.pd b/help/pix_opencv_calibration-help.pd
new file mode 100644
index 0000000..ea6bd56
--- /dev/null
+++ b/help/pix_opencv_calibration-help.pd
@@ -0,0 +1,258 @@
+#N canvas 479 182 1188 810 10;
+#X obj 20 33 cnv 15 430 580 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 20 -13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 29 -9 Arguments:;
+#X obj 19 -109 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 24 -145 Class: pix_opencv;
+#X text 25 -161 Synopsis: [pix_opencv_calibration];
+#X text 37 37 getting started with camera calibration :;
+#X text 65 123 3 Check calibration toggle to start and move the chessboard
+in front of the camera (or move the camera in front of your screen).
+Your computer may slow down during searching chessboard corners. When
+all corners are found it takes a snapshot (and the image will be negative)
+;
+#X text 65 103 2 Plug a supported camera and start rendering;
+#X text 66 73 1 Print the chessboard ona rigid paperboard (or just
+show it on the screen);
+#X text 65 194 4 When enought chessboard have been found (20 by default)
+it computes transformation matrix and map to undistord the image;
+#X text 65 244 5 Then all incoming images are undistord \, you can
+save the transformation and distorsion matrix to files to load it next
+times;
+#X text 31 287 for more information about this calibration see :;
+#X text 41 327 - A flexible new technique for camera calibration \,
+Zhang \, 1998 \, Microsoft Research;
+#X text 41 307 - Learning Opencv \, Bradski and Kaehler \, 2008 \,
+O'Reilly;
+#X text 50 11 none;
+#X obj 455 -188 cnv 15 720 800 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 615 374 cnv 15 400 160 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 815 -160 gemhead;
+#X obj 619 569 pix_texture;
+#X obj 795 538 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 3 81 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 342 184 destroy;
+#X msg 283 161 frame 25;
+#X obj 164 126 t b b b;
+#X msg 161 189 dimen 640 560 \, create \, 1;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 9 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 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 10 0;
+#X connect 9 2 8 0;
+#X connect 10 0 6 0;
+#X restore 805 584 pd gemwin;
+#X msg 805 564 destroy;
+#X obj 485 570 pix_texture;
+#X obj 619 216 separator;
+#X obj 827 -133 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 884 42 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 866 7 5 0 10000 1 frame# - -, f 5;
+#X obj 827 -104 openpanel;
+#X msg 827 -84 open \$1;
+#X obj 815 25 pix_film;
+#X msg 833 -41 auto \$1;
+#X obj 833 -59 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 803 544 Create window and render;
+#X msg 928 -58 colorspace RGBA;
+#X msg 942 -35 colorspace RGB;
+#X msg 957 -13 colorspace Grey;
+#X obj 928 -86 loadbang;
+#X obj 619 197 pix_separator;
+#X obj 485 217 separator;
+#X obj 485 198 pix_separator;
+#N canvas 1 184 299 199 vswitch 0;
+#X obj 36 128 outlet;
+#X obj 36 26 inlet;
+#X obj 130 26 inlet;
+#X obj 175 27 inlet;
+#X obj 81 61 == 0;
+#X obj 36 83 spigot 1;
+#X obj 130 84 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 485 67 pd vswitch;
+#X obj 581 68 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X obj 485 34 pix_video;
+#X obj 485 -160 gemhead;
+#X msg 504 -88 dimen 640 480;
+#X msg 502 -113 dimen 320 240;
+#X text 681 432 load distorsion coefficients and intrinsic matrix;
+#X msg 531 -18 driver v4l2;
+#X msg 515 -65 driver dc1394 \, dimen 640 480 \, colorspace grey;
+#X msg 540 3 driver dc1394;
+#X obj 619 494 pix_opencv_calibration;
+#X obj 485 165 pix_grey;
+#X obj 485 236 translateXYZ 0 -2 0;
+#X obj 619 236 translateXYZ 0 2 0;
+#X obj 485 590 rectangle 2.666 2;
+#X obj 619 590 rectangle 2.666 2;
+#X msg 682 451 loadDist \$1;
+#X msg 698 471 loadIntra \$1;
+#X msg 652 391 writeDist \$1;
+#X msg 663 413 writeIntra \$1;
+#X text 651 372 write distorsion coefficients and intrinsic matrix
+;
+#X obj 746 117 cnv 15 420 240 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 754 128 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 754 148 calibration \$1;
+#X msg 754 192 view \$1;
+#X text 793 170 number of view to take during calibration;
+#X floatatom 754 174 5 0 0 0 - - -, f 5;
+#X obj 754 233 pack f f;
+#X msg 754 253 patternSize \$1 \$2;
+#X floatatom 754 215 5 0 0 0 - - -, f 5;
+#X floatatom 807 215 5 0 0 0 - - -, f 5;
+#X text 844 211 number of inner corners on the chessboard;
+#N canvas 130 67 612 325 advance-options 0;
+#X msg 55 161 findChessFlag \$1 \$2 \$3;
+#X obj 68 91 t b f;
+#X obj 55 142 pack f f f;
+#X obj 118 111 t b f;
+#X obj 55 51 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 68 71 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 118 91 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 55 267 outlet;
+#X text 53 27 findChessBoardCorner option;
+#X text 75 50 CV_CALIB_CB_ADAPTIVE_TRESH : adaptive threhold (default
+1);
+#X text 84 70 CV_CALIB_CB_NORMALIZE_IMAGE : normalize image (default
+0);
+#X text 135 91 CV_CALIB_CB_FILTER_QUADS: advance filtering (default
+1);
+#X connect 0 0 7 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 2;
+#X connect 4 0 2 0;
+#X connect 5 0 1 0;
+#X connect 6 0 3 0;
+#X restore 753 315 pd advance-options;
+#X floatatom 754 274 5 0 0 0 - - -, f 5;
+#X msg 754 292 wait \$1;
+#X text 792 273 number of frame to wait between two takes during calibration
+;
+#X text 773 128 start callibration;
+#X obj 544 166 pix_rgba;
+#X obj 485 140 spigot 1;
+#X text 598 66 switch source (camera / film);
+#X obj 530 95 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X text 547 93 switch color mode ( grey / rgba );
+#X msg 524 -41 device 1;
+#X obj 530 118 == 0;
+#X obj 544 140 spigot 0;
+#X msg 753 335 reset;
+#X text 797 334 reset corrections;
+#X obj 748 516 print;
+#X text 784 516 print some infos;
+#X obj 635 351 t a;
+#X text 26 -100 Description: pix_opencv_calibration does camera calibration.
+You need to move a checkboard in front of the camera during the calibration.
+;
+#X connect 18 0 30 0;
+#X connect 19 0 56 0;
+#X connect 21 0 22 0;
+#X connect 22 0 21 0;
+#X connect 23 0 55 0;
+#X connect 24 0 54 0;
+#X connect 25 0 28 0;
+#X connect 26 0 27 0;
+#X connect 27 0 30 1;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 41 1;
+#X connect 30 2 26 0;
+#X connect 31 0 30 0;
+#X connect 32 0 31 0;
+#X connect 34 0 30 0;
+#X connect 34 0 43 0;
+#X connect 35 0 30 0;
+#X connect 36 0 30 0;
+#X connect 37 0 34 0;
+#X connect 37 0 32 0;
+#X connect 38 0 24 0;
+#X connect 39 0 53 0;
+#X connect 40 0 39 0;
+#X connect 41 0 79 0;
+#X connect 41 0 85 0;
+#X connect 42 0 41 2;
+#X connect 43 0 41 0;
+#X connect 44 0 43 0;
+#X connect 45 0 43 0;
+#X connect 46 0 43 0;
+#X connect 48 0 43 0;
+#X connect 49 0 43 0;
+#X connect 50 0 43 0;
+#X connect 51 0 19 0;
+#X connect 51 1 88 0;
+#X connect 52 0 40 0;
+#X connect 52 0 38 0;
+#X connect 53 0 23 0;
+#X connect 54 0 51 0;
+#X connect 57 0 51 0;
+#X connect 58 0 51 0;
+#X connect 59 0 51 0;
+#X connect 60 0 51 0;
+#X connect 63 0 64 0;
+#X connect 64 0 90 0;
+#X connect 65 0 90 0;
+#X connect 67 0 65 0;
+#X connect 68 0 69 0;
+#X connect 69 0 90 0;
+#X connect 70 0 68 0;
+#X connect 71 0 68 1;
+#X connect 73 0 90 0;
+#X connect 74 0 75 0;
+#X connect 75 0 90 0;
+#X connect 78 0 40 0;
+#X connect 78 0 38 0;
+#X connect 79 0 52 0;
+#X connect 81 0 84 0;
+#X connect 81 0 85 1;
+#X connect 83 0 43 0;
+#X connect 84 0 79 1;
+#X connect 85 0 78 0;
+#X connect 86 0 90 0;
+#X connect 90 0 51 0;
diff --git a/help/pix_opencv_camshift-help.pd b/help/pix_opencv_camshift-help.pd
new file mode 100644
index 0000000..9455958
--- /dev/null
+++ b/help/pix_opencv_camshift-help.pd
@@ -0,0 +1,207 @@
+#N canvas 661 275 964 666 10;
+#X obj 0 114 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 9 118 Arguments:;
+#X obj -1 18 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 4 -19 Class: pix_opencv;
+#X text 30 138 none;
+#X obj 435 -41 cnv 15 510 650 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 440 533 pix_texture;
+#X obj 717 529 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 189 149 454 304 gemwin 0;
+#X obj 130 218 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 182 68 set create;
+#X msg 129 165 create \, 1;
+#X msg 205 166 destroy;
+#N canvas 87 154 363 340 Gem.init 0;
+#X obj 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 289 80 pd Gem.init;
+#X obj 128 109 t b b b;
+#X msg 156 138 dimen 320 240;
+#X msg 247 137 frame 25;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 9 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 9 0 6 0;
+#X connect 9 1 10 0;
+#X connect 9 2 11 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X restore 724 575 pd gemwin;
+#X msg 724 554 create;
+#X text 727 536 Create window and render;
+#X obj 438 255 cnv 15 500 270 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 440 552 pix_resize 320 240;
+#X obj 440 433 pix_opencv_camshift;
+#X obj 551 453 unpack f f f f f;
+#X floatatom 551 478 5 0 0 0 - - -, f 5;
+#X floatatom 590 478 5 0 0 0 - - -, f 5;
+#X floatatom 628 478 5 0 0 0 - - -, f 5;
+#X floatatom 667 478 5 0 0 0 - - -, f 5;
+#X floatatom 708 478 5 0 0 0 - - -, f 5;
+#X text 578 502 center Y;
+#X text 628 492 width;
+#X text 663 503 height;
+#X text 538 492 center X;
+#X text 706 494 angle;
+#X text 663 452 for the tracked object;
+#X msg 515 323 backproject \$1;
+#X text 634 324 show the backproject flow image;
+#X obj 612 324 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 473 260 vmin \$1;
+#X floatatom 529 262 5 0 0 0 - - -, f 5;
+#X floatatom 545 280 5 0 0 0 - - -, f 5;
+#X msg 491 280 vmax \$1;
+#X floatatom 558 303 5 0 0 0 - - -, f 5;
+#X msg 504 302 smin \$1;
+#X text 583 280 V pre-filtering maximal value ( default : 256 );
+#X text 597 301 S pre-filtering minimal value ( default : 30 );
+#X msg 547 386 track \$1 \$2;
+#X text 624 384 track %x %y : mark the object to track;
+#X floatatom 591 347 5 0 0 0 - - -, f 5;
+#X floatatom 608 367 5 0 0 0 - - -, f 5;
+#X msg 526 345 rwidth \$1;
+#X msg 535 365 rheight \$1;
+#X text 627 345 initial search region width ( default : 20 );
+#X text 646 366 initial search region height ( default : 20 );
+#X text 574 262 V pre-filtering minimal value ( default : 50 );
+#X text 15 31 pix_opencv_camshift : continuously adaptive mean-shift
+algorithm to track objects based on a hidden histogram of the hue component
+of pixels.;
+#X obj 440 232 pix_resize 320 240;
+#X obj 440 571 rectangle 5.3 4;
+#X obj 617 -31 gemhead;
+#X obj 629 -4 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 686 171 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 668 136 5 0 10000 1 frame# - -, f 5;
+#X obj 629 25 openpanel;
+#X msg 629 45 open \$1;
+#X obj 617 154 pix_film;
+#X msg 635 88 auto \$1;
+#X obj 635 70 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 730 71 colorspace RGBA;
+#X msg 741 91 colorspace RGB;
+#X obj 730 43 loadbang;
+#N canvas 1 83 450 300 vswitch 0;
+#X obj 36 133 outlet;
+#X obj 36 26 inlet;
+#X obj 129 29 inlet;
+#X obj 174 28 inlet;
+#X obj 81 72 == 0;
+#X obj 36 93 spigot 1;
+#X obj 129 101 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 440 194 pd vswitch;
+#X obj 509 193 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 440 152 pix_video;
+#X obj 440 -36 gemhead;
+#X msg 479 88 device 0;
+#X msg 488 108 driver 1;
+#X msg 466 49 dialog;
+#X msg 471 69 device /dev/dv1394-0;
+#X obj 440 213 pix_rgba;
+#X text 5 -35 Synopsis: [pix_opencv_camshift];
+#X obj 0 160 cnv 15 430 450 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 11 164 written by Yves Degoyon ( ydegoyon@gmail.com ) \, inspired
+by OpenCV samples code.;
+#N canvas 1 95 450 300 mouseSelection 0;
+#X obj 161 100 gemmouse;
+#X obj 183 132 sel 1;
+#X obj 161 266 outlet;
+#X obj 161 201 pack 0 0;
+#X obj 161 175 f;
+#X msg 161 223 track \$1 \$2;
+#X connect 0 0 4 1;
+#X connect 0 1 3 1;
+#X connect 0 2 1 0;
+#X connect 1 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X restore 546 410 pd mouseSelection;
+#X text 657 410 click on Gem window to select feature to track;
+#X connect 6 0 12 0;
+#X connect 8 0 9 0;
+#X connect 9 0 8 0;
+#X connect 12 0 48 0;
+#X connect 13 0 6 0;
+#X connect 13 1 14 0;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X connect 14 2 17 0;
+#X connect 14 3 18 0;
+#X connect 14 4 19 0;
+#X connect 26 0 13 0;
+#X connect 28 0 26 0;
+#X connect 29 0 13 0;
+#X connect 30 0 29 0;
+#X connect 31 0 32 0;
+#X connect 32 0 13 0;
+#X connect 33 0 34 0;
+#X connect 34 0 13 0;
+#X connect 37 0 13 0;
+#X connect 39 0 41 0;
+#X connect 40 0 42 0;
+#X connect 41 0 13 0;
+#X connect 42 0 13 0;
+#X connect 47 0 13 0;
+#X connect 49 0 55 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 61 1;
+#X connect 55 2 51 0;
+#X connect 56 0 55 0;
+#X connect 57 0 56 0;
+#X connect 58 0 55 0;
+#X connect 58 0 63 0;
+#X connect 59 0 55 0;
+#X connect 60 0 58 0;
+#X connect 60 0 57 0;
+#X connect 61 0 69 0;
+#X connect 62 0 61 2;
+#X connect 63 0 61 0;
+#X connect 64 0 63 0;
+#X connect 65 0 63 0;
+#X connect 66 0 63 0;
+#X connect 67 0 63 0;
+#X connect 68 0 63 0;
+#X connect 69 0 47 0;
+#X connect 73 0 13 0;
diff --git a/help/pix_opencv_clahe-help.pd b/help/pix_opencv_clahe-help.pd
new file mode 100644
index 0000000..39ae4ed
--- /dev/null
+++ b/help/pix_opencv_clahe-help.pd
@@ -0,0 +1,139 @@
+#N canvas 674 205 963 606 10;
+#X obj 20 33 cnv 15 430 380 empty empty empty 20 12 0 14 -228856 -66577
+0;
+#X obj 20 -13 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X obj 19 -109 cnv 15 430 90 empty empty empty 20 12 0 14 -228856 -66577
+0;
+#X text 24 -145 Class: pix_opencv;
+#X obj 455 -186 cnv 15 500 600 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 725 -180 gemhead;
+#X obj 485 369 pix_texture;
+#X obj 661 338 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 3 81 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 342 184 destroy;
+#X msg 283 161 frame 25;
+#X obj 164 126 t b b b;
+#X msg 161 189 dimen 640 560 \, create \, 1;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 9 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 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 10 0;
+#X connect 9 2 8 0;
+#X connect 10 0 6 0;
+#X restore 671 384 pd gemwin;
+#X msg 671 364 destroy;
+#X obj 737 -153 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 782 -67 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 776 -83 5 0 10000 1 frame# - -, f 5;
+#X obj 737 -124 openpanel;
+#X obj 725 -65 pix_film;
+#X text 669 344 Create window and render;
+#N canvas 1 184 299 199 vswitch 0;
+#X obj 36 128 outlet;
+#X obj 36 26 inlet;
+#X obj 130 26 inlet;
+#X obj 175 27 inlet;
+#X obj 81 61 == 0;
+#X obj 36 83 spigot 1;
+#X obj 130 84 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 485 -23 pd vswitch;
+#X obj 581 -22 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 485 -56 pix_video;
+#X obj 485 -180 gemhead;
+#X obj 485 75 pix_grey;
+#X obj 544 76 pix_rgba;
+#X obj 485 50 spigot 1;
+#X text 598 -24 switch source (camera / film);
+#X obj 530 5 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X text 547 3 switch color mode ( grey / rgba );
+#X obj 530 28 == 0;
+#X obj 544 50 spigot 0;
+#X obj 481 174 cnv 15 400 160 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 737 -104 open \$1 \, auto 1;
+#X obj 485 137 t a;
+#X obj 581 -66 loadbang;
+#X msg 581 -44 0;
+#X obj 612 -144 == 0;
+#X obj 612 -165 t a a;
+#X obj 485 390 rectangle 4 3;
+#X floatatom 504 188 5 0 0 0 - - -, f 5;
+#X floatatom 506 244 5 0 0 0 - - -, f 5;
+#X text 27 -11 Arguments: (optional);
+#X obj 544 100 alpha;
+#X text 25 -161 Synopsis: [pix_opencv_clahe];
+#X msg 504 211 clipLimit \$1;
+#X text 539 188 clip limit;
+#X text 542 242 tile grid size;
+#X msg 507 267 tileGridSize \$1 \$1;
+#X obj 485 295 pix_opencv_clahe 40 8 2;
+#X text 48 3 <clipLimit> <tile xsize> <tile ysize>;
+#X connect 5 0 14 0;
+#X connect 6 0 35 0;
+#X connect 8 0 9 0;
+#X connect 9 0 8 0;
+#X connect 10 0 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 14 1;
+#X connect 13 0 29 0;
+#X connect 14 0 16 1;
+#X connect 14 2 11 0;
+#X connect 16 0 22 0;
+#X connect 16 0 27 0;
+#X connect 17 0 16 2;
+#X connect 17 0 34 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 0;
+#X connect 20 0 30 0;
+#X connect 21 0 39 0;
+#X connect 22 0 20 0;
+#X connect 24 0 26 0;
+#X connect 24 0 27 1;
+#X connect 26 0 22 1;
+#X connect 27 0 21 0;
+#X connect 29 0 14 0;
+#X connect 30 0 45 0;
+#X connect 31 0 32 0;
+#X connect 32 0 17 0;
+#X connect 33 0 19 0;
+#X connect 34 0 33 0;
+#X connect 34 1 5 0;
+#X connect 36 0 41 0;
+#X connect 37 0 44 0;
+#X connect 39 0 30 0;
+#X connect 41 0 45 0;
+#X connect 44 0 45 0;
+#X connect 45 0 6 0;
diff --git a/help/pix_opencv_colorfilt-help.pd b/help/pix_opencv_colorfilt-help.pd
new file mode 100644
index 0000000..8244bac
--- /dev/null
+++ b/help/pix_opencv_colorfilt-help.pd
@@ -0,0 +1,164 @@
+#N canvas 240 210 936 587 10;
+#X obj -6 52 cnv 15 430 370 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj -6 6 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 3 10 Arguments:;
+#X obj -7 -90 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 24 30 none;
+#X obj 430 -147 cnv 15 480 570 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 680 337 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 327 189 destroy;
+#X msg 283 161 frame 25;
+#X obj 164 126 t b b b;
+#X msg 161 188 dimen 320 240 \, create \, 1;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 9 0;
+#X connect 2 1 4 0;
+#X connect 2 1 7 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 10 0;
+#X connect 9 2 8 0;
+#X connect 10 0 6 0;
+#X restore 690 381 pd gemwin;
+#X msg 690 363 create;
+#X obj 441 201 cnv 15 460 130 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 688 343 Create window and render;
+#X text 2 -57 written by Yves Degoyon ( ydegoyon@gmail.com );
+#X obj 446 361 rectangle 5.3 4;
+#X floatatom 485 310 5 0 0 0 - - -;
+#X floatatom 530 310 5 0 0 0 - - -;
+#X floatatom 575 310 5 0 0 0 - - -;
+#X text 619 310 RGB selected components;
+#X msg 483 230 tolerance \$1;
+#X floatatom 569 232 5 0 0 0 - - -;
+#X text 610 231 tolerance applied for the selection of colors;
+#X obj 832 49 gemmouse;
+#X obj 828 134 f;
+#X obj 798 133 f;
+#X obj 798 112 t b b;
+#X obj 798 155 pack f f;
+#X obj 798 90 route 1;
+#X text 3 -112 pix_opencv_colorfilt : color filter;
+#X text 4 -80 you can set the selected color with its RGB components
+or by selecting a piksel in the video window;
+#X msg 466 204 pick \$1 \$2;
+#X text 542 203 pick a color from the video;
+#X obj 633 -135 gemhead;
+#X obj 645 -108 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 702 67 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 684 32 5 0 10000 1 frame# - -;
+#X obj 645 -79 openpanel;
+#X msg 645 -59 open \$1;
+#X obj 633 50 pix_film;
+#X msg 651 -16 auto \$1;
+#X obj 651 -34 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 746 -33 colorspace RGBA;
+#X msg 759 5 colorspace RGB;
+#X msg 754 -14 colorspace Grey;
+#X obj 746 -61 loadbang;
+#N canvas 1 165 267 218 vswitch 0;
+#X obj 36 143 outlet;
+#X obj 36 26 inlet;
+#X obj 120 27 inlet;
+#X obj 165 27 inlet;
+#X obj 81 79 == 0;
+#X obj 36 103 spigot 1;
+#X obj 120 105 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 446 91 pd vswitch;
+#X obj 514 91 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 446 48 pix_video;
+#X obj 446 -134 gemhead;
+#X msg 485 -27 device 0;
+#X msg 494 4 driver 1;
+#X msg 471 -81 dialog;
+#X msg 476 -51 device /dev/dv1394-0;
+#X obj 446 289 pix_opencv_colorfilt;
+#X obj 446 133 pix_resize 320 240;
+#X obj 446 112 pix_rgba;
+#X floatatom 485 270 5 0 0 0 - - -;
+#X floatatom 530 270 5 0 0 0 - - -;
+#X floatatom 575 270 5 0 0 0 - - -;
+#X text 619 270 RGB selected components;
+#X obj 446 339 pix_texture;
+#X connect 7 0 8 0;
+#X connect 8 0 7 0;
+#X connect 17 0 51 0;
+#X connect 18 0 17 0;
+#X connect 20 0 22 1;
+#X connect 20 1 21 1;
+#X connect 20 2 25 0;
+#X connect 21 0 24 1;
+#X connect 22 0 24 0;
+#X connect 23 0 22 0;
+#X connect 23 1 21 0;
+#X connect 24 0 28 0;
+#X connect 25 0 23 0;
+#X connect 28 0 51 0;
+#X connect 30 0 36 0;
+#X connect 31 0 34 0;
+#X connect 32 0 33 0;
+#X connect 33 0 36 1;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 43 1;
+#X connect 36 2 32 0;
+#X connect 37 0 36 0;
+#X connect 38 0 37 0;
+#X connect 39 0 36 0;
+#X connect 39 0 45 0;
+#X connect 40 0 36 0;
+#X connect 41 0 36 0;
+#X connect 42 0 39 0;
+#X connect 42 0 38 0;
+#X connect 43 0 53 0;
+#X connect 44 0 43 2;
+#X connect 45 0 43 0;
+#X connect 46 0 45 0;
+#X connect 47 0 45 0;
+#X connect 48 0 45 0;
+#X connect 49 0 45 0;
+#X connect 50 0 45 0;
+#X connect 51 0 58 0;
+#X connect 51 1 13 0;
+#X connect 51 2 14 0;
+#X connect 51 3 15 0;
+#X connect 52 0 51 0;
+#X connect 53 0 52 0;
+#X connect 54 0 51 1;
+#X connect 55 0 51 2;
+#X connect 56 0 51 3;
+#X connect 58 0 12 0;
diff --git a/help/pix_opencv_contours-help.pd b/help/pix_opencv_contours-help.pd
new file mode 100644
index 0000000..f14f0f8
--- /dev/null
+++ b/help/pix_opencv_contours-help.pd
@@ -0,0 +1,731 @@
+#N canvas 849 245 794 766 10;
+#X declare -lib pix_opencv;
+#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 13 315 Inlets:;
+#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 20 266 Arguments:;
+#X text 12 436 Outlets:;
+#X text 478 20 Example:;
+#X text 58 21 Class: pix_opencv;
+#X text 11 60 Description: finds contours;
+#X text 66 276 none;
+#X text 30 349 Inlet 1: message: epsilon [float];
+#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 1 122 450 300 gemwin 0;
+#X obj 132 156 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 198 112 destroy;
+#X msg 132 132 reset \, dimen 640 480 \, create \, 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 3 1 5 0;
+#X connect 3 1 6 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 restore 358 354 pd gemwin;
+#X msg 358 335 destroy;
+#X text 354 314 Create window:;
+#X text 30 329 Inlet 1: binarized image;
+#X text 30 589 <number of segments> <2> <x \, y corner coordinate pairs>
+;
+#X text 25 447 Outlet 1: gemlist output;
+#X text 37 5 Synopsis: [pix_opencv_contours];
+#X text 21 578 contour (for each of them);
+#X text 37 75 [pix_opencv_contours] finds contours in incomming image
+\, simplifies it according to the epsilon value and outputs contours
+with area greater than a threshold.;
+#X text 30 339 Inlet 1: message: area threshold [float];
+#X text 25 457 Outlet 2: contour \, convexhull and convexity defect
+output;
+#X text 37 126 contrary to [pix_opencv_contour_convexhull] \, [pix_opencv_contours]
+outputs all contours found not only the biggest.;
+#X text 37 175 it can also output rotated bounding rectangle \, convexhull
+and cenvexity defects;
+#X text 37 215 you can choose the hierarchy level of output contour
+;
+#X text 37 235 so this external replaces all old pix_opencv_contours_*
+;
+#X text 30 619 <number of segments> <2> <x \, y corner coordinate pairs>
+;
+#X text 21 606 convexhull (for each contour);
+#X text 20 637 convexixitydefects (for each contour);
+#X text 30 649 <number of segments> <7> <start point (2 floats)> <end
+point (2 floats)> <depth point (2 floats)> depth;
+#X text 26 699 by antoine villeret - 2012;
+#X text 16 719 bug \, feedback \, comment... on the pd-list;
+#X obj 476 193 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 541 151 pix_texture;
+#X obj 487 76 t b a a;
+#X obj 487 57 gemhead 1;
+#X msg 542 214 epsilon \$1;
+#X floatatom 542 197 5 0 0 0 - - -, f 5;
+#X obj 625 121 loadbang;
+#X obj 541 171 rectangle 5.333 4;
+#X obj 514 116 t a a;
+#X msg 617 214 area \$1;
+#X floatatom 617 197 5 0 0 0 - - -, f 5;
+#X msg 659 142 10;
+#X msg 625 141 2;
+#N canvas 1167 234 474 845 draw_rotrect 0;
+#X obj 71 506 GEMglVertex2d;
+#X obj 71 586 GEMglVertex2d;
+#X obj 71 666 GEMglVertex2d;
+#X obj 71 746 GEMglVertex2d;
+#X obj 71 766 GEMglEnd;
+#X obj 71 277 alpha;
+#X obj 143 178 list split 1;
+#X obj 71 420 GEMglBegin GL_LINE_LOOP;
+#X obj 177 198 list split 8;
+#X msg 363 324 0 0 0 0 0 0 0 0;
+#X obj 32 -8 inlet INFO;
+#X obj 71 256 gemhead;
+#X obj 15 147 loadbang;
+#X msg 15 168 0;
+#X obj 71 52 t b a b;
+#X obj 211 504 list split 2;
+#X obj 177 448 list split 2;
+#X obj 137 472 unpack;
+#X obj 211 525 unpack;
+#X obj 245 564 list split 2;
+#X obj 245 585 unpack;
+#X obj 279 664 list split 2;
+#X obj 279 685 unpack;
+#X obj 90 84 list split 2;
+#X obj 95 154 list append;
+#X obj 292 81 t b;
+#X obj 32 32 route 0;
+#X floatatom 342 463 5 0 0 0 - - -, f 5;
+#X obj 342 442 list length;
+#X obj 71 400 GEMglLineWidth 1;
+#X obj 71 327 translateXYZ -5.3333 4 0;
+#X obj 71 361 scaleXYZ 10.6666 -8 0;
+#X obj 124 107 list split 20;
+#X obj 71 302 color 1 1 0 1;
+#X obj 124 128 t b b a;
+#X obj 32 13 route info;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 33 0;
+#X connect 6 1 8 0;
+#X connect 7 0 0 0;
+#X connect 8 0 16 0;
+#X connect 9 0 16 0;
+#X connect 10 0 35 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 13 0 11 0;
+#X connect 14 1 23 0;
+#X connect 14 2 25 0;
+#X connect 15 0 18 0;
+#X connect 15 1 19 0;
+#X connect 16 0 17 0;
+#X connect 16 1 15 0;
+#X connect 17 0 0 1;
+#X connect 17 1 0 2;
+#X connect 18 0 1 1;
+#X connect 18 1 1 2;
+#X connect 19 0 20 0;
+#X connect 19 1 21 0;
+#X connect 20 0 2 1;
+#X connect 20 1 2 2;
+#X connect 21 0 22 0;
+#X connect 22 0 3 1;
+#X connect 22 1 3 2;
+#X connect 23 1 32 0;
+#X connect 24 0 32 0;
+#X connect 25 0 9 0;
+#X connect 26 1 14 0;
+#X connect 28 0 27 0;
+#X connect 29 0 7 0;
+#X connect 30 0 31 0;
+#X connect 31 0 29 0;
+#X connect 32 0 34 0;
+#X connect 32 1 24 1;
+#X connect 33 0 30 0;
+#X connect 34 0 24 0;
+#X connect 34 1 11 0;
+#X connect 34 2 6 0;
+#X connect 34 2 28 0;
+#X connect 35 0 26 0;
+#X restore 658 323 pd draw_rotrect;
+#X obj 487 240 pix_opencv_contours;
+#N canvas 955 337 674 695 drawdefects 0;
+#X obj 191 301 gemhead;
+#X obj 134 217 loadbang;
+#X msg 134 238 0;
+#X obj 210 116 list split 2;
+#X obj 215 186 list append;
+#X obj 191 375 scaleXYZ 10.6666 -8 0;
+#X obj 244 160 t b b a;
+#X obj 210 76 inlet DEFECTS;
+#X obj 210 96 route convexitydefects;
+#X obj 244 139 list split 7;
+#X obj 191 335 color 1 0 0 1;
+#X obj 191 355 translateXYZ -5.3333 4 0;
+#N canvas 895 575 739 379 ortho_point 0;
+#X obj 192 7 inlet;
+#X obj 192 57 t a a;
+#X obj 204 238 *;
+#X obj 174 238 *;
+#X obj 114 124 unpack 0 0 0 0;
+#X obj 114 279 +;
+#X obj 154 279 +;
+#X obj 114 340 outlet;
+#X obj 174 320 outlet;
+#X obj 153 198 -;
+#X msg 153 178 1 \$1;
+#X obj 144 238 *;
+#X obj 114 238 *;
+#X obj 219 84 list split 6;
+#X text 519 123 dot product;
+#X floatatom 244 163 5 0 0 0 - - -, f 5;
+#X obj 300 29 t b;
+#X msg 343 68 0 1 1 1 0.5 0.5;
+#X obj 219 124 expr abs(($f3-$f1)*($f6-$f2)+($f4-$f2)*($f5-$f1));
+#X obj 302 158 expr $f1*sqrt(10.666*8);
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 13 0;
+#X connect 2 0 6 1;
+#X connect 3 0 5 1;
+#X connect 4 0 12 0;
+#X connect 4 1 11 0;
+#X connect 4 2 3 0;
+#X connect 4 3 2 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 9 0;
+#X connect 11 0 6 0;
+#X connect 12 0 5 0;
+#X connect 13 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 1 0;
+#X connect 18 0 15 0;
+#X connect 18 0 19 0;
+#X connect 19 0 2 1;
+#X connect 19 0 3 1;
+#X connect 19 0 10 0;
+#X restore 328 515 pd ortho_point;
+#X obj 191 475 translateXYZ 10.6666 -8 0;
+#X msg 240 451 \$5;
+#X msg 289 451 \$6;
+#X obj 191 556 circle 0.01;
+#X msg 204 530 draw line;
+#X obj 204 506 loadbang;
+#X obj 354 369 t a;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 1 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 13 0;
+#X connect 6 0 4 0;
+#X connect 6 1 0 0;
+#X connect 6 2 19 0;
+#X connect 7 0 8 0;
+#X connect 8 0 3 0;
+#X connect 9 0 6 0;
+#X connect 9 1 4 1;
+#X connect 10 0 11 0;
+#X connect 11 0 5 0;
+#X connect 13 0 16 0;
+#X connect 14 0 13 1;
+#X connect 15 0 13 2;
+#X connect 17 0 16 0;
+#X connect 18 0 17 0;
+#X connect 19 0 15 0;
+#X connect 19 0 14 0;
+#X restore 542 294 pd drawdefects;
+#N canvas 168 587 1126 291 options 0;
+#X obj 57 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 57 167 contours \$1;
+#X obj 57 251 outlet;
+#X obj 147 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 147 167 convexhulls \$1;
+#X msg 247 167 convexitydefects \$1;
+#X text 25 37 set hierarchy level (which contour to send out);
+#X obj 24 83 nbx 5 14 -2 1e+37 0 1 empty empty empty 0 -8 0 10 -262144
+-1 -1 -1 256;
+#X msg 24 100 hierarchy_level \$1;
+#X text 71 125 send out different kind of infos (all on by default)
+:;
+#X text 25 47 -1 for all contours (default);
+#X msg 559 168 settab drawX drawY drawZ;
+#X obj 558 200 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 558 229 taboutput \$1;
+#X text 550 71 first set some tables (they are dynamically resized)
+;
+#X text 550 151 tell it what tables to use;
+#X text 582 200 enable disable table output (automatically enable when
+ou set table);
+#X text 569 256 see [pd draw_contour_gemvertexbuffer] for an example
+of drawing contours;
+#N canvas 789 194 596 300 draw_contour_gemvertexbuffer 0;
+#X obj 175 173 loadbang;
+#X obj 135 65 translateXYZ -0.5 -0.5 0;
+#X obj 135 42 scaleXYZ 10.6666 -8 1;
+#X obj 135 87 t a b;
+#X obj 135 -9 gemhead 1000;
+#X obj 135 17 alpha 0;
+#X msg 161 130 posX drawX \, posY drawY \, colorG drawZ \, colorA drawZ
+;
+#X msg 175 193 draw line;
+#X obj 135 245 gemvertexbuffer;
+#X obj 161 108 inlet;
+#X obj 269 174 r point_number;
+#X msg 269 201 resize \$1;
+#X floatatom 342 206 5 0 0 0 - - -, f 5;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 8 0;
+#X connect 3 1 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 9 0 6 0;
+#X connect 10 0 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 8 0;
+#X restore 797 147 pd draw_contour_gemvertexbuffer;
+#X obj 797 126 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 813 127 draw with gemvertexbuffer;
+#X msg 379 80 repeat_point \$1;
+#X floatatom 379 62 5 0 0 0 - - -, f 5;
+#X text 348 47 repeat the first point n times;
+#X msg 383 167 cvblobOutput \$1;
+#X obj 383 148 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 25 57 -2 for only contours with no child (aka holes);
+#X obj 564 89 table drawX 1000;
+#X obj 564 109 table drawY 1000;
+#X obj 564 129 table drawZ 1000;
+#X text 543 5 to improve performance and avoid "stack overflow" (because
+contours could have a huge number of points) you can use table output
+instead of list output;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X connect 12 0 2 0;
+#X connect 13 0 14 0;
+#X connect 14 0 2 0;
+#X connect 20 0 19 0;
+#X connect 22 0 2 0;
+#X connect 23 0 22 0;
+#X connect 25 0 2 0;
+#X connect 26 0 25 0;
+#X restore 674 213 pd options;
+#X text 489 347 color legend :;
+#X text 522 364 yellow = bounding box;
+#X text 528 374 green = contour;
+#X text 534 385 blue = convexhull;
+#X text 534 397 pink = convexhull edge with defects;
+#X text 540 409 red = farthest point from convexhull;
+#N canvas 630 223 621 734 draw_contours 0;
+#X obj 178 132 list split 2;
+#X obj 170 593 GEMglEnd;
+#X obj 300 590 GEMglVertex2d;
+#X obj 212 263 list append;
+#X obj 241 237 t b a;
+#X obj 241 216 list split 2;
+#X obj 341 495 unpack;
+#X obj 310 257 t b a;
+#X obj -101 364 color 1 0 0 1;
+#X obj 405 545 * -8;
+#X obj 405 565 + 4;
+#X obj -101 422 GEMglLineWidth 2;
+#X obj 341 545 * 10.6666;
+#X obj 341 565 - 5.33333;
+#X obj 170 564 gemlist;
+#X obj 300 421 gemlist;
+#X obj -62 242 gemhead;
+#X obj -62 187 loadbang;
+#X msg -62 208 0;
+#X obj 133 161 unpack 0 0;
+#X floatatom 133 182 5 0 0 0 nb_of_segments - -, f 5;
+#X obj 107 -65 inlet CONTOUR;
+#X obj -101 334 gemlist;
+#X obj 212 159 t b a b b;
+#X obj 106 -44 route convexhull contour convexitydefects;
+#X obj 187 1 t a b;
+#X msg -17 320 0 0 1 1;
+#X msg -25 299 0 1 0 1;
+#X obj 106 0 t a b;
+#X obj 268 1 list split 2;
+#X obj 290 96 list append;
+#X obj 319 76 t b a;
+#X obj 302 28 t b a b b;
+#X obj 268 -19 t a b;
+#X msg -7 340 1 0 1 1;
+#X obj 319 55 list split 7;
+#X obj 346 116 list split 4;
+#X obj -101 459 GEMglBegin GL_LINE_LOOP;
+#X obj -115 -62 inlet;
+#X obj -115 -40 t a a a;
+#X connect 0 0 19 0;
+#X connect 0 1 23 0;
+#X connect 2 0 14 1;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 3 1;
+#X connect 6 0 12 0;
+#X connect 6 1 9 0;
+#X connect 7 0 15 0;
+#X connect 7 1 6 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 2 2;
+#X connect 11 0 37 0;
+#X connect 12 0 13 0;
+#X connect 13 0 2 1;
+#X connect 14 0 1 0;
+#X connect 15 0 2 0;
+#X connect 17 0 18 0;
+#X connect 18 0 16 0;
+#X connect 19 0 20 0;
+#X connect 21 0 24 0;
+#X connect 22 0 8 0;
+#X connect 23 0 14 0;
+#X connect 23 1 5 0;
+#X connect 23 2 22 0;
+#X connect 23 3 16 0;
+#X connect 24 0 28 0;
+#X connect 24 1 25 0;
+#X connect 24 2 33 0;
+#X connect 25 0 0 0;
+#X connect 25 1 27 0;
+#X connect 26 0 8 1;
+#X connect 27 0 8 1;
+#X connect 28 0 0 0;
+#X connect 28 1 26 0;
+#X connect 29 1 32 0;
+#X connect 30 0 35 0;
+#X connect 31 0 30 0;
+#X connect 31 1 36 0;
+#X connect 32 1 35 0;
+#X connect 33 0 29 0;
+#X connect 33 1 34 0;
+#X connect 34 0 8 1;
+#X connect 35 0 31 0;
+#X connect 35 1 30 1;
+#X connect 36 0 23 0;
+#X connect 37 0 15 1;
+#X connect 38 0 39 0;
+#X connect 39 0 22 1;
+#X restore 504 513 pd draw_contours;
+#N canvas 13 321 1198 730 info 0;
+#X obj -67 115 cnv 15 250 40 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj -68 292 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 14 332 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 282 -59 cnv 15 100 40 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 51 497 cnv 15 330 50 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 225 16 inlet;
+#X obj 225 67 list split 2;
+#X obj 259 137 list split 20;
+#X text 309 70 cut matrix header;
+#X text 346 98 cut infos for the 1st contour;
+#X text -55 294 rotated rectangle center point (normalized);
+#X obj 211 224 list split 2;
+#X obj 245 314 unpack;
+#X floatatom 245 334 5 0 0 0 - - -, f 5;
+#X floatatom 278 334 5 0 0 0 - - -, f 5;
+#X obj 245 244 list split 2;
+#X text 29 334 rotated rectangle size (normalized);
+#X obj 313 384 list split 8;
+#X floatatom 304 -37 5 0 0 0 - - -, f 5;
+#X obj 304 -18 * 20;
+#X obj 304 4 + 2;
+#X text 284 -55 selected contour;
+#X obj 116 96 unpack;
+#X floatatom 116 117 5 0 0 0 - - -, f 5;
+#X floatatom 149 138 5 0 0 0 - - -, f 5;
+#X text -52 114 number of detected contours;
+#X text -61 137 numbers of values for each contour;
+#X obj 313 404 list prepend set;
+#X obj 313 424 list trim;
+#X msg 54 513 0.681584 0.808552 0.679688 0.789583 0.704353 0.785198
+0.70625 0.804167;
+#X text 59 495 rotrect corners coordinates;
+#X obj 570 153 list split 20;
+#X obj 570 175 t b a;
+#X obj 617 222 list;
+#X msg 597 259 \$15;
+#X obj 597 281 +;
+#X obj 625 281 f;
+#X msg 620 122 0;
+#X obj 582 303 f;
+#X obj 551 119 t b a b;
+#X floatatom 582 325 5 0 0 0 - - -, f 5;
+#X text 445 323 total number of points;
+#X obj 177 194 list split 1;
+#X obj -140 220 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X floatatom 177 223 5 0 0 0 - - -, f 5;
+#X text 24 223 id in the detection order;
+#X obj 26 405 cnv 15 250 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 30 408 rotated rectangle angle (degrees);
+#X obj 279 364 list split 2;
+#X obj 211 274 unpack;
+#X floatatom 211 294 5 0 0 0 - - -, f 5;
+#X floatatom 244 294 5 0 0 0 - - -, f 5;
+#X obj 240 387 unpack;
+#X floatatom 240 407 5 0 0 0 - - -, f 5;
+#X obj 26 435 cnv 15 250 20 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X floatatom 240 437 5 0 0 0 - - -, f 5;
+#X text 30 438 area in % of image area;
+#X obj 199 570 cnv 15 250 80 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X floatatom 347 595 5 0 0 0 - - -, f 5;
+#X floatatom 381 615 5 0 0 0 - - -, f 5;
+#X text 203 614 length of contour (in pixels);
+#X text 247 595 number of points;
+#X obj 347 575 unpack f f;
+#X obj 225 38 route cvblob count;
+#X obj 736 107 unpack f f;
+#X floatatom 736 129 5 0 0 0 - - -, f 5;
+#X floatatom 793 130 5 0 0 0 - - -, f 5;
+#X obj 776 195 s point_number;
+#X text 723 144 contours;
+#X text 797 145 points;
+#X text 690 160 total counts of contours and points;
+#X connect 5 0 63 0;
+#X connect 6 0 22 0;
+#X connect 6 1 7 0;
+#X connect 6 1 39 0;
+#X connect 7 0 42 0;
+#X connect 11 0 49 0;
+#X connect 11 1 15 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 15 0 12 0;
+#X connect 15 1 48 0;
+#X connect 17 0 27 0;
+#X connect 17 1 62 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 6 1;
+#X connect 22 0 23 0;
+#X connect 22 1 24 0;
+#X connect 22 1 19 1;
+#X connect 22 1 7 1;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 31 0 32 0;
+#X connect 31 1 33 1;
+#X connect 32 0 33 0;
+#X connect 32 1 34 0;
+#X connect 33 0 31 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 35 0 38 1;
+#X connect 36 0 35 1;
+#X connect 37 0 35 1;
+#X connect 38 0 40 0;
+#X connect 39 0 38 0;
+#X connect 39 1 31 0;
+#X connect 39 2 37 0;
+#X connect 42 0 44 0;
+#X connect 42 1 11 0;
+#X connect 48 0 52 0;
+#X connect 48 1 17 0;
+#X connect 49 0 50 0;
+#X connect 49 1 51 0;
+#X connect 52 0 53 0;
+#X connect 52 1 55 0;
+#X connect 62 0 58 0;
+#X connect 62 1 59 0;
+#X connect 63 0 6 0;
+#X connect 63 1 64 0;
+#X connect 64 0 65 0;
+#X connect 64 1 66 0;
+#X connect 64 1 67 0;
+#X restore 675 294 pd info;
+#X text 29 498 <num of contour> 20 <contour area> <rotrect corners
+coordinates (8 floats)> <rotrect center position (2 floats)> <rotrect
+size (2 floats)> <angle in degrees> <number of points> <contour length>
+0 0 0 0;
+#X obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 30 369 Inlet 1: message: contours <0|1>;
+#X text 30 379 Inlet 1: message: convexhull <0|1>;
+#X text 30 389 Inlet 1: message: convexitydefects <0|1>;
+#X text 30 399 Inlet 1: message: settab tabname1 tabname2 tabname3
+;
+#X text 30 409 Inlet 1: message: taboutput <0|1>;
+#X text 30 359 Inlet 1: message: hierarchy_level [float];
+#X obj 514 96 pix_image examples/dessin.tif;
+#N canvas 865 237 931 731 cvblob 0;
+#X obj 87 321 gemlist;
+#X obj 87 301 t b a;
+#X obj 328 306 list append;
+#X obj 323 198 list split 2;
+#X obj 323 142 list append;
+#X obj 99 108 t b a;
+#X obj 357 280 t b a;
+#X obj 87 511 translateXYZ;
+#X msg 228 354 \$2;
+#X obj 87 361 alpha 1;
+#X obj 87 471 translateXYZ -0.5 -0.5 0;
+#X obj 87 535 scaleXYZ 0.125 0.25 0;
+#X msg 267 354 \$3;
+#X msg 242 468 \$4;
+#X obj 271 333 t a a;
+#X obj 87 581 circle 0.5;
+#X obj 87 431 color 1 0 0 0.2;
+#X obj 87 341 separator;
+#X msg 307 504 \$1;
+#X obj 87 621 color 1 1 0 1;
+#X obj 357 246 list split 6;
+#X msg 426 194 \$2;
+#X obj 174 627 loadbang;
+#X msg 174 646 12;
+#X msg 329 382 \$6;
+#X obj 329 404 > 0;
+#X obj 329 425 sel 1 0;
+#X msg 328 446 1 0 0 0.2;
+#X msg 348 466 0 1 0 0.2;
+#X obj 87 601 translateXYZ 0.2 0.2 0;
+#X text 547 280 here is an example on how to display blobs with Gem
+;
+#X obj 87 451 scaleXYZ 10.666 -8 0;
+#X obj 87 682 text2d;
+#X text 452 195 <- be careful ! the size of the cvblob matrix could
+change;
+#X text 534 212 please check second element to gets matrix width (number
+of value per blob);
+#X obj 323 164 t a a;
+#X obj 386 11 inlet cvblob;
+#X obj 386 33 route cvblob;
+#X obj 240 490 sqrt;
+#X obj 99 83 spigot;
+#X obj 386 55 t a a;
+#X msg 413 77 \$1;
+#X floatatom 413 99 5 0 0 0 - - -, f 5;
+#X obj 99 19 inlet;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 1 1 14 0;
+#X connect 2 0 20 0;
+#X connect 3 1 20 0;
+#X connect 4 0 35 0;
+#X connect 5 0 4 0;
+#X connect 5 1 0 1;
+#X connect 6 0 2 0;
+#X connect 6 1 1 0;
+#X connect 7 0 11 0;
+#X connect 8 0 7 1;
+#X connect 9 0 16 0;
+#X connect 10 0 7 0;
+#X connect 11 0 15 0;
+#X connect 12 0 7 2;
+#X connect 13 0 38 0;
+#X connect 14 0 12 0;
+#X connect 14 0 8 0;
+#X connect 14 1 13 0;
+#X connect 14 1 18 0;
+#X connect 14 1 24 0;
+#X connect 15 0 29 0;
+#X connect 16 0 31 0;
+#X connect 17 0 9 0;
+#X connect 18 0 32 0;
+#X connect 19 0 32 0;
+#X connect 20 0 6 0;
+#X connect 20 1 2 1;
+#X connect 21 0 20 1;
+#X connect 22 0 23 0;
+#X connect 23 0 32 1;
+#X connect 24 0 25 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 26 1 28 0;
+#X connect 27 0 16 1;
+#X connect 28 0 16 1;
+#X connect 29 0 19 0;
+#X connect 31 0 10 0;
+#X connect 35 0 3 0;
+#X connect 35 1 21 0;
+#X connect 36 0 37 0;
+#X connect 37 0 40 0;
+#X connect 38 0 11 1;
+#X connect 38 0 11 2;
+#X connect 39 0 5 0;
+#X connect 40 0 4 1;
+#X connect 40 1 41 0;
+#X connect 41 0 42 0;
+#X connect 41 0 39 1;
+#X connect 43 0 39 0;
+#X restore 664 365 pd cvblob;
+#X text 506 492 WARNING ! this crashes;
+#X text 20 488 cvblob;
+#X text 25 467 Outlet 3: info output;
+#X text 20 558 count <number of contour> <total number of point>;
+#X text 612 516 fix me !;
+#X obj 487 171 pix_rgba;
+#X obj 487 141 pix_video;
+#X obj 532 603 declare -lib pix_opencv;
+#X connect 13 0 14 0;
+#X connect 14 0 13 0;
+#X connect 35 0 41 0;
+#X connect 36 0 75 0;
+#X connect 36 1 67 0;
+#X connect 37 0 36 0;
+#X connect 38 0 48 0;
+#X connect 39 0 38 0;
+#X connect 40 0 46 0;
+#X connect 40 0 45 0;
+#X connect 42 0 75 0;
+#X connect 42 1 35 0;
+#X connect 43 0 48 0;
+#X connect 44 0 43 0;
+#X connect 45 0 44 0;
+#X connect 46 0 39 0;
+#X connect 48 0 68 0;
+#X connect 48 1 49 0;
+#X connect 48 2 68 1;
+#X connect 48 2 47 0;
+#X connect 48 2 58 0;
+#X connect 50 0 48 0;
+#X connect 60 0 37 0;
+#X connect 67 0 42 0;
+#X connect 74 0 48 0;
+#X connect 75 0 74 0;
diff --git a/help/pix_opencv_contours_boundingrect-help.pd b/help/pix_opencv_contours_boundingrect-help.pd
new file mode 100644
index 0000000..88fd8fc
--- /dev/null
+++ b/help/pix_opencv_contours_boundingrect-help.pd
@@ -0,0 +1,255 @@
+#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;
diff --git a/help/pix_opencv_contours_convexhull-help.pd b/help/pix_opencv_contours_convexhull-help.pd
new file mode 100644
index 0000000..a509af6
--- /dev/null
+++ b/help/pix_opencv_contours_convexhull-help.pd
@@ -0,0 +1,181 @@
+#N canvas 586 108 1018 740 10;
+#X obj 588 591 cnv 15 255 67 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 841 790 5 0 0 0 - - -;
+#X floatatom 876 790 5 0 0 0 - - -;
+#X floatatom 906 771 5 0 0 0 - - -;
+#X floatatom 940 771 5 0 0 0 - - -;
+#X obj 868 710 unpack 0 0 0 0 0 0;
+#X floatatom 970 752 5 0 0 0 - - -;
+#X floatatom 1004 752 5 0 0 0 - - -;
+#X text 36 159 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 pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect.
+;
+#X obj 606 634 pix_opencv_contours_convexhull;
+#X text 1043 753 etc ...;
+#X text 978 771 Second vertex point (X -Y);
+#X text 916 790 First vertex point (X -Y);
+#X text 37 212 pix_opencv_contours_convexhull works detecting the bigest
+white area in the input image \, sometimes you will need to use pix_opencv_morphology
+to transform the contours of the shape to be analyzed..;
+#X text 37 123 pix_opencv_contours_convexhull :: Finds convexhull of
+the bigest contour of a binary image.;
+#X floatatom 694 685 5 0 0 0 - - -;
+#X obj 725 54 gemhead;
+#X obj 606 852 pix_texture;
+#X obj 606 871 square 2;
+#X obj 43 50 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 53 94 pd gemwin;
+#X msg 53 76 create;
+#X obj 454 848 pix_texture;
+#X obj 454 876 square 2;
+#X obj 606 381 separator;
+#X obj 737 81 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 794 256 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 776 221 5 0 10000 1 frame# - -;
+#X obj 737 110 openpanel;
+#X msg 737 130 open \$1;
+#X obj 725 239 pix_film;
+#X msg 743 173 auto \$1;
+#X obj 743 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 51 56 Create window and render;
+#X msg 838 156 colorspace RGBA;
+#X msg 943 156 colorspace RGB;
+#X msg 1047 156 colorspace Grey;
+#X obj 838 128 loadbang;
+#X obj 605 352 pix_separator;
+#X obj 454 384 separator;
+#X obj 454 355 pix_separator;
+#X obj 454 419 translateXYZ -2 0 0;
+#X obj 606 416 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 547 309 pd vswitch;
+#X obj 615 309 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 488 237 pix_video;
+#X obj 488 49 gemhead;
+#X msg 527 162 device 0;
+#X msg 536 193 driver 1;
+#X msg 513 108 dialog;
+#X msg 518 138 device /dev/dv1394-0;
+#X obj 606 481 pix_opencv_bgsubstract;
+#X obj 606 449 pix_resize 320 240;
+#X text 728 684 number of vertex of the convexhull;
+#X floatatom 753 480 5 0 0 0 - - -;
+#X obj 543 334 pix_rgba;
+#X msg 756 453 set;
+#X text 785 453 <- Set the background reference;
+#X obj 62 419 cnv 15 300 60 empty empty DEPRECATED!! 100 20 0 18 -233017
+-258113 0;
+#X text 74 445 please consider the use of pix_opencv_contours;
+#X connect 5 0 1 0;
+#X connect 5 1 2 0;
+#X connect 5 2 3 0;
+#X connect 5 3 4 0;
+#X connect 5 4 6 0;
+#X connect 5 5 7 0;
+#X connect 9 0 17 0;
+#X connect 9 1 15 0;
+#X connect 9 2 5 0;
+#X connect 16 0 30 0;
+#X connect 17 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 20 0;
+#X connect 22 0 23 0;
+#X connect 24 0 42 0;
+#X connect 25 0 28 0;
+#X connect 26 0 27 0;
+#X connect 27 0 30 1;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
+#X connect 30 0 43 1;
+#X connect 30 2 26 0;
+#X connect 31 0 30 0;
+#X connect 32 0 31 0;
+#X connect 34 0 30 0;
+#X connect 34 0 45 0;
+#X connect 35 0 30 0;
+#X connect 36 0 30 0;
+#X connect 37 0 34 0;
+#X connect 37 0 32 0;
+#X connect 38 0 24 0;
+#X connect 39 0 41 0;
+#X connect 40 0 39 0;
+#X connect 41 0 22 0;
+#X connect 42 0 52 0;
+#X connect 43 0 55 0;
+#X connect 44 0 43 2;
+#X connect 45 0 43 0;
+#X connect 46 0 45 0;
+#X connect 47 0 45 0;
+#X connect 48 0 45 0;
+#X connect 49 0 45 0;
+#X connect 50 0 45 0;
+#X connect 51 0 9 0;
+#X connect 52 0 51 0;
+#X connect 54 0 51 1;
+#X connect 55 0 40 0;
+#X connect 55 0 38 0;
+#X connect 56 0 51 0;
diff --git a/help/pix_opencv_contours_convexity-help.pd b/help/pix_opencv_contours_convexity-help.pd
new file mode 100644
index 0000000..350bd73
--- /dev/null
+++ b/help/pix_opencv_contours_convexity-help.pd
@@ -0,0 +1,191 @@
+#N canvas 227 366 1068 671 10;
+#X obj 17 217 cnv 15 430 450 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 17 171 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 26 175 Arguments:;
+#X obj 17 76 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 22 38 Class: pix_opencv;
+#X text 23 22 Synopsis: [pix_opencv_calibration];
+#X text 47 195 none;
+#X text 26 86 pix_opencv_contours_convexity :: Finds convexity defects
+of the bigest contour of a binary image.;
+#X text 25 228 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 pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect.
+;
+#X text 26 281 pix_opencv_contours_boundingrect works detecting the
+bigest white area in the input image \, sometimes you will need to
+use pix_opencv_morphology to transform the contours of the shape to
+be analyzed..;
+#X obj 453 6 cnv 15 610 660 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 600 414 cnv 15 455 200 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 609 625 pix_texture;
+#X obj 832 240 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 842 284 pd gemwin;
+#X msg 842 266 destroy;
+#X obj 458 627 pix_texture;
+#X obj 458 646 square 2;
+#X obj 609 291 separator;
+#X obj 647 41 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 704 216 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 686 181 5 0 10000 1 frame# - -;
+#X obj 647 70 openpanel;
+#X msg 647 90 open \$1;
+#X obj 635 199 pix_film;
+#X msg 653 133 auto \$1;
+#X obj 653 115 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 840 246 Create window and render;
+#X msg 748 116 colorspace RGBA;
+#X msg 758 137 colorspace RGB;
+#X msg 772 156 colorspace Grey;
+#X obj 748 88 loadbang;
+#X obj 609 272 pix_separator;
+#X obj 458 294 separator;
+#X obj 458 275 pix_separator;
+#X obj 458 312 translateXYZ -2 0 0;
+#N canvas 1 158 405 225 vswitch 0;
+#X obj 36 139 outlet;
+#X obj 36 26 inlet;
+#X obj 260 29 inlet;
+#X obj 305 29 inlet;
+#X obj 81 73 == 0;
+#X obj 36 93 spigot 1;
+#X obj 260 95 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 458 230 pd vswitch;
+#X obj 526 230 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 458 197 pix_video;
+#X msg 497 132 device 0;
+#X msg 506 153 driver 1;
+#X msg 483 93 dialog;
+#X msg 488 113 device /dev/dv1394-0;
+#X obj 609 368 pix_opencv_bgsubstract;
+#X obj 609 329 pix_resize 320 240;
+#X floatatom 756 369 5 0 0 0 - - -;
+#X obj 609 388 pix_opencv_morphology;
+#X floatatom 757 387 5 0 0 0 - - -;
+#X obj 609 644 square 2;
+#X floatatom 746 588 5 0 0 0 - - -;
+#X floatatom 781 588 5 0 0 0 - - -;
+#X floatatom 811 569 5 0 0 0 - - -;
+#X floatatom 845 569 5 0 0 0 - - -;
+#X obj 780 466 route 0 1 2 3 4;
+#X obj 780 524 unpack 0 0 0 0 0 0;
+#X floatatom 875 550 5 0 0 0 - - -;
+#X floatatom 909 550 5 0 0 0 - - -;
+#X text 819 589 Start point (X -Y);
+#X text 883 569 Depth point (X -Y);
+#X text 948 551 End point (X -Y);
+#X floatatom 694 441 5 0 0 0 - - -;
+#X text 730 445 number convexity defects in our detected contour;
+#X text 692 484 A convexity defect is defined by 3 points. So for each
+convexity defects we have ::;
+#X obj 609 310 translateXYZ 2 0 0;
+#X obj 609 421 pix_opencv_contours_convexity;
+#X obj 458 251 pix_rgba;
+#X msg 623 348 set;
+#X text 652 347 <- Set the background reference;
+#X text 790 369 <-Adjust threshold;
+#X text 796 389 <-Adjust morphology if needed;
+#X obj 635 14 gemhead;
+#X obj 458 9 gemhead;
+#X obj 62 419 cnv 15 300 60 empty empty DEPRECATED!! 100 20 0 18 -233017
+-258113 0;
+#X text 74 445 please consider the use of pix_opencv_contours;
+#X connect 12 0 48 0;
+#X connect 14 0 15 0;
+#X connect 15 0 14 0;
+#X connect 16 0 17 0;
+#X connect 18 0 63 0;
+#X connect 19 0 22 0;
+#X connect 20 0 21 0;
+#X connect 21 0 24 1;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 36 1;
+#X connect 24 2 20 0;
+#X connect 25 0 24 0;
+#X connect 26 0 25 0;
+#X connect 28 0 24 0;
+#X connect 28 0 38 0;
+#X connect 29 0 24 0;
+#X connect 30 0 24 0;
+#X connect 31 0 28 0;
+#X connect 31 0 26 0;
+#X connect 32 0 18 0;
+#X connect 33 0 35 0;
+#X connect 34 0 33 0;
+#X connect 35 0 16 0;
+#X connect 36 0 65 0;
+#X connect 37 0 36 2;
+#X connect 38 0 36 0;
+#X connect 39 0 38 0;
+#X connect 40 0 38 0;
+#X connect 41 0 38 0;
+#X connect 42 0 38 0;
+#X connect 43 0 46 0;
+#X connect 44 0 43 0;
+#X connect 45 0 43 1;
+#X connect 46 0 64 0;
+#X connect 47 0 46 1;
+#X connect 53 0 54 0;
+#X connect 54 0 49 0;
+#X connect 54 1 50 0;
+#X connect 54 2 51 0;
+#X connect 54 3 52 0;
+#X connect 54 4 55 0;
+#X connect 54 5 56 0;
+#X connect 63 0 44 0;
+#X connect 64 0 12 0;
+#X connect 64 1 60 0;
+#X connect 64 2 53 0;
+#X connect 65 0 34 0;
+#X connect 65 0 32 0;
+#X connect 66 0 43 0;
+#X connect 70 0 24 0;
+#X connect 71 0 38 0;
diff --git a/help/pix_opencv_dft-help.pd b/help/pix_opencv_dft-help.pd
new file mode 100644
index 0000000..5e71995
--- /dev/null
+++ b/help/pix_opencv_dft-help.pd
@@ -0,0 +1,157 @@
+#N canvas 522 300 1067 534 10;
+#X obj 6 109 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 6 63 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 15 67 Arguments:;
+#X obj 6 -32 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 11 -70 Class: pix_opencv;
+#X text 12 -86 Synopsis: [pix_opencv_calibration];
+#X text 36 87 none;
+#X obj 443 -91 cnv 15 610 520 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 769 -82 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 774 -38 pd gemwin;
+#X msg 774 -59 create;
+#X text 775 -77 Create window and render;
+#X obj 598 236 cnv 15 450 120 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 601 329 pix_opencv_dft;
+#X text 18 116 written by yves degoyon ( ydegoyon@gmail.com );
+#X text 16 -7 this can be used for pattern matching;
+#X text 18 -24 pix_opencv_dft : discrete fourier transform;
+#X msg 616 302 bang;
+#X obj 608 242 loadbang;
+#X obj 608 279 metro 100;
+#X text 678 279 <-- Calculate Discrete Fourier Transform of the pattern
+;
+#X text 698 303 frame so it is just processed when it receives a bang
+;
+#X obj 617 -76 gemhead;
+#X obj 601 367 pix_texture;
+#X obj 601 386 square 2;
+#X obj 450 369 pix_texture;
+#X obj 450 389 square 2;
+#X obj 601 193 separator;
+#X obj 629 -49 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 686 126 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 668 91 5 0 10000 1 frame# - -;
+#X obj 629 -20 openpanel;
+#X msg 629 0 open \$1;
+#X obj 617 109 pix_film;
+#X msg 635 43 auto \$1;
+#X obj 635 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 730 26 colorspace RGBA;
+#X msg 741 47 colorspace RGB;
+#X msg 748 69 colorspace Grey;
+#X obj 730 -2 loadbang;
+#X obj 601 175 pix_separator;
+#X obj 450 194 separator;
+#X obj 450 176 pix_separator;
+#X obj 450 213 translateXYZ -2 0 0;
+#X obj 601 213 translateXYZ 2 0 0;
+#N canvas 1 202 234 181 vswitch 0;
+#X obj 36 113 outlet;
+#X obj 36 26 inlet;
+#X obj 100 25 inlet;
+#X obj 145 25 inlet;
+#X obj 36 83 spigot 1;
+#X obj 100 83 spigot 0;
+#X obj 81 62 == 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 5 1;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 1;
+#X restore 450 133 pd vswitch;
+#X obj 518 133 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 450 107 pix_video;
+#X obj 450 -81 gemhead;
+#X msg 479 54 device 0;
+#X msg 488 73 driver 1;
+#X msg 465 16 dialog;
+#X msg 470 36 device /dev/dv1394-0;
+#X obj 450 154 pix_rgba;
+#X text 700 290 pix_opencv_dft is too greedy to be calculayed for every
+;
+#X obj 608 261 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X connect 9 0 10 0;
+#X connect 10 0 9 0;
+#X connect 13 0 23 0;
+#X connect 17 0 13 0;
+#X connect 18 0 55 0;
+#X connect 19 0 13 0;
+#X connect 22 0 33 0;
+#X connect 23 0 24 0;
+#X connect 25 0 26 0;
+#X connect 27 0 44 0;
+#X connect 28 0 31 0;
+#X connect 29 0 30 0;
+#X connect 30 0 33 1;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 45 1;
+#X connect 33 2 29 0;
+#X connect 34 0 33 0;
+#X connect 35 0 34 0;
+#X connect 36 0 33 0;
+#X connect 36 0 47 0;
+#X connect 37 0 33 0;
+#X connect 38 0 33 0;
+#X connect 39 0 36 0;
+#X connect 39 0 35 0;
+#X connect 40 0 27 0;
+#X connect 41 0 43 0;
+#X connect 42 0 41 0;
+#X connect 43 0 25 0;
+#X connect 44 0 13 0;
+#X connect 45 0 53 0;
+#X connect 46 0 45 2;
+#X connect 47 0 45 0;
+#X connect 48 0 47 0;
+#X connect 49 0 47 0;
+#X connect 50 0 47 0;
+#X connect 51 0 47 0;
+#X connect 52 0 47 0;
+#X connect 53 0 42 0;
+#X connect 53 0 40 0;
+#X connect 55 0 19 0;
diff --git a/help/pix_opencv_distrans-help.pd b/help/pix_opencv_distrans-help.pd
new file mode 100644
index 0000000..2068f6f
--- /dev/null
+++ b/help/pix_opencv_distrans-help.pd
@@ -0,0 +1,162 @@
+#N canvas 553 329 1017 532 10;
+#X obj 3 62 cnv 15 430 320 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 3 16 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 12 20 Arguments:;
+#X obj 3 -79 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 8 -117 Class: pix_opencv;
+#X text 34 33 none;
+#X obj 445 -137 cnv 15 560 520 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 596 197 cnv 15 400 130 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 602 300 pix_opencv_distrans;
+#X msg 672 207 voronoi \$1;
+#X obj 763 207 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 782 207 switch Voronoi diagram mode on/off;
+#X text 731 233 use 3x3 mask;
+#X text 741 252 use 5x5 mask;
+#X text 747 271 use precise distance transform;
+#X text 802 298 edge threshold;
+#X msg 694 271 mask 0;
+#X msg 684 252 mask 5;
+#X msg 674 232 mask 3;
+#X text 11 68 it's a morphology filter that can be used to preprocess
+video frames;
+#X text 12 93 written by lluis gomez i bigorda ( lluisgomez@hangar.org
+);
+#X text 9 -75 pix_opencv_distrans : distance processing;
+#X floatatom 755 298 5 0 0 0 - - -;
+#X obj 204 302 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 209 346 pd gemwin;
+#X msg 209 325 create;
+#X text 210 307 Create window and render;
+#X obj 687 -125 gemhead;
+#X obj 602 329 pix_texture;
+#X obj 602 350 square 2;
+#X obj 450 329 pix_texture;
+#X obj 450 350 square 2;
+#X obj 602 155 separator;
+#X obj 699 -98 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 756 77 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 738 42 5 0 10000 1 frame# - -;
+#X obj 699 -69 openpanel;
+#X msg 699 -49 open \$1;
+#X obj 687 60 pix_film;
+#X msg 705 -6 auto \$1;
+#X obj 705 -24 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 800 -23 colorspace RGBA;
+#X msg 808 -4 colorspace RGB;
+#X msg 820 15 colorspace Grey;
+#X obj 800 -51 loadbang;
+#X obj 602 136 pix_separator;
+#X obj 450 155 separator;
+#X obj 450 136 pix_separator;
+#X obj 450 173 translateXYZ -2 0 0;
+#X obj 602 174 translateXYZ 2 0 0;
+#N canvas 1 83 450 300 vswitch 0;
+#X obj 36 124 outlet;
+#X obj 36 26 inlet;
+#X obj 130 29 inlet;
+#X obj 175 28 inlet;
+#X obj 81 73 == 0;
+#X obj 36 93 spigot 1;
+#X obj 130 96 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 450 94 pd vswitch;
+#X obj 518 94 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 450 58 pix_video;
+#X obj 450 -130 gemhead;
+#X msg 489 -5 device 0;
+#X msg 498 14 driver 1;
+#X msg 475 -44 dialog;
+#X msg 480 -24 device /dev/dv1394-0;
+#X obj 450 115 pix_rgba;
+#X text 9 -133 Synopsis: [pix_opencv_distrans<];
+#X connect 8 0 28 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 16 0 8 0;
+#X connect 17 0 8 0;
+#X connect 18 0 8 0;
+#X connect 22 0 8 1;
+#X connect 24 0 25 0;
+#X connect 25 0 24 0;
+#X connect 27 0 38 0;
+#X connect 28 0 29 0;
+#X connect 30 0 31 0;
+#X connect 32 0 49 0;
+#X connect 33 0 36 0;
+#X connect 34 0 35 0;
+#X connect 35 0 38 1;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 38 0 50 1;
+#X connect 38 2 34 0;
+#X connect 39 0 38 0;
+#X connect 40 0 39 0;
+#X connect 41 0 38 0;
+#X connect 41 0 52 0;
+#X connect 42 0 38 0;
+#X connect 43 0 38 0;
+#X connect 44 0 41 0;
+#X connect 44 0 40 0;
+#X connect 45 0 32 0;
+#X connect 46 0 48 0;
+#X connect 47 0 46 0;
+#X connect 48 0 30 0;
+#X connect 49 0 8 0;
+#X connect 50 0 58 0;
+#X connect 51 0 50 2;
+#X connect 52 0 50 0;
+#X connect 53 0 52 0;
+#X connect 54 0 52 0;
+#X connect 55 0 52 0;
+#X connect 56 0 52 0;
+#X connect 57 0 52 0;
+#X connect 58 0 47 0;
+#X connect 58 0 45 0;
diff --git a/help/pix_opencv_edge-help.pd b/help/pix_opencv_edge-help.pd
new file mode 100644
index 0000000..ae7f578
--- /dev/null
+++ b/help/pix_opencv_edge-help.pd
@@ -0,0 +1,144 @@
+#N canvas 663 231 914 465 10;
+#X obj 8 158 cnv 15 430 250 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 8 112 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 17 116 Arguments:;
+#X obj 7 16 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 38 136 none;
+#X obj 444 -41 cnv 15 460 450 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 597 324 cnv 15 300 40 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 604 330 pix_opencv_edge;
+#X floatatom 733 329 5 0 0 0 - - -, f 5;
+#X text 776 328 edge threshold;
+#X text 23 165 written by lluis gomez i bigorda ( lluisgomez@hangar.org
+);
+#X obj 209 334 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 50 454 304 gemwin 0;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 214 378 pd gemwin;
+#X msg 214 357 destroy;
+#X text 215 339 Create window and render;
+#X obj 620 -28 gemhead;
+#X obj 604 367 pix_texture;
+#X obj 604 385 square 2;
+#X obj 453 367 pix_texture;
+#X obj 453 385 square 2;
+#X obj 604 279 separator;
+#X obj 632 -1 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 689 174 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 671 139 5 0 10000 1 frame# - -, f 5;
+#X obj 632 28 openpanel;
+#X msg 632 48 open \$1;
+#X obj 620 157 pix_film;
+#X msg 638 91 auto \$1;
+#X obj 638 73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 733 74 colorspace RGBA;
+#X msg 741 93 colorspace RGB;
+#X msg 753 113 colorspace Grey;
+#X obj 733 46 loadbang;
+#X obj 604 260 pix_separator;
+#X obj 453 279 separator;
+#X obj 453 260 pix_separator;
+#X obj 453 299 translateXYZ -2 0 0;
+#X obj 604 299 translateXYZ 2 0 0;
+#N canvas 1 83 450 300 vswitch 0;
+#X obj 36 117 outlet;
+#X obj 36 26 inlet;
+#X obj 140 29 inlet;
+#X obj 185 28 inlet;
+#X obj 81 60 == 0;
+#X obj 36 81 spigot 1;
+#X obj 140 85 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 453 207 pd vswitch;
+#X obj 521 207 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 453 155 pix_video;
+#X obj 453 -33 gemhead;
+#X msg 492 80 device 0;
+#X msg 478 26 dialog;
+#X msg 483 56 device /dev/dv1394-0;
+#X obj 453 230 pix_grey;
+#X text 16 -4 pix_opencv_edge;
+#X text 15 20 edge detection filter;
+#X msg 501 111 driver 0;
+#X connect 7 0 16 0;
+#X connect 8 0 7 1;
+#X connect 12 0 13 0;
+#X connect 13 0 12 0;
+#X connect 15 0 26 0;
+#X connect 16 0 17 0;
+#X connect 18 0 19 0;
+#X connect 20 0 37 0;
+#X connect 21 0 24 0;
+#X connect 22 0 23 0;
+#X connect 23 0 26 1;
+#X connect 24 0 25 0;
+#X connect 25 0 26 0;
+#X connect 26 0 38 1;
+#X connect 26 2 22 0;
+#X connect 27 0 26 0;
+#X connect 28 0 27 0;
+#X connect 29 0 26 0;
+#X connect 29 0 40 0;
+#X connect 30 0 26 0;
+#X connect 31 0 26 0;
+#X connect 32 0 29 0;
+#X connect 32 0 28 0;
+#X connect 33 0 20 0;
+#X connect 34 0 36 0;
+#X connect 35 0 34 0;
+#X connect 36 0 18 0;
+#X connect 37 0 7 0;
+#X connect 38 0 45 0;
+#X connect 39 0 38 2;
+#X connect 40 0 38 0;
+#X connect 41 0 40 0;
+#X connect 42 0 40 0;
+#X connect 43 0 40 0;
+#X connect 44 0 40 0;
+#X connect 45 0 35 0;
+#X connect 45 0 33 0;
+#X connect 48 0 40 0;
diff --git a/help/pix_opencv_facetracker-help.pd b/help/pix_opencv_facetracker-help.pd
new file mode 100644
index 0000000..1810aae
--- /dev/null
+++ b/help/pix_opencv_facetracker-help.pd
@@ -0,0 +1,415 @@
+#N canvas 478 34 785 700 10;
+#X obj 473 46 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 12 67 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 12 318 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 14 326 Inlets:;
+#X obj 12 278 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 21 277 Arguments:;
+#X text 13 497 Outlets:;
+#X text 479 31 Example:;
+#X text 59 32 Class: pix_opencv;
+#X text 67 287 none;
+#X obj 354 536 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 1 162 450 300 gemwin 0;
+#X obj 132 156 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 198 112 destroy;
+#X msg 132 132 reset \, dimen 640 480 \, offset 10 640 \, create \,
+1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 3 1 5 0;
+#X connect 3 1 6 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 restore 359 575 pd gemwin;
+#X msg 359 556 destroy;
+#X text 355 535 Create window:;
+#X text 26 508 Outlet 1: gemlist output;
+#X text 17 730 bug \, feedback \, comment... on the pd-list;
+#X obj 477 114 cnv 15 280 160 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 488 58 gemhead 1;
+#X obj 488 291 pix_texture;
+#X msg 500 190 reset;
+#X obj 488 88 pix_video;
+#X text 31 340 Inlet 1: gemlist input;
+#X text 38 16 Synopsis: [pix_opencv_facetracker];
+#X text 12 71 Description: finds face;
+#X text 39 87 [pix_opencv_facetracker] uses the FaceTracker library
+by Jason Saragih and Kyle Macdonald to track face features.;
+#X text 27 710 by antoine villeret - 2013;
+#X msg 548 190 show \$1;
+#X obj 548 171 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 31 355 Inlet 1: message reset : reset the tracker;
+#X text 31 370 Inlet 1: message show : draw tracking data on image
+;
+#X msg 604 190 tolerance \$1;
+#X floatatom 604 173 5 0 0 0 - - -;
+#X floatatom 688 173 5 0 0 0 - - -;
+#X msg 688 190 clamp \$1;
+#X msg 576 142 filter \$1;
+#X floatatom 576 125 5 0 0 0 - - -;
+#X text 31 443 Inlet 1: message filter : Maximum number of optimization
+steps to perform. default 5;
+#X text 31 413 Inlet 1: message clamp : shape model parameters clamping
+factor (in standard dev's). default 3;
+#X text 31 385 Inlet 1: message tolerance : convergence tolerance of
+optimization. default 0.01;
+#N canvas 1373 557 410 415 draw_contour_gemvertexbuffer 0;
+#N canvas 1 100 548 451 mouse 0;
+#X obj 25 145 translateXYZ -0.5 -0.5 0;
+#X obj 25 122 scaleXYZ 10.6666 -8 1;
+#X obj 25 97 alpha 0;
+#X obj 25 71 gemhead 10000;
+#X obj 25 52 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 221 203 route float;
+#X obj 221 225 sel 1;
+#X obj 221 182 route gem_state;
+#X msg 44 191 position MOUTH;
+#X obj 25 167 t a b b;
+#X obj 25 375 gemvertexbuffer 200;
+#X msg 81 253 draw lineloop \, colorG colorR \, colorA colorA \, draw_range
+0 12;
+#X connect 0 0 9 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 11 0;
+#X connect 7 0 5 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 9 1 8 0;
+#X connect 11 0 10 0;
+#X restore 38 28 pd mouse;
+#N canvas 1 95 631 351 jaw 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 156 170 position JAW;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 264 182 route float;
+#X obj 264 204 sel 1;
+#X obj 264 161 route gem_state;
+#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \,
+draw_range 0 17;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 10 0;
+#X connect 4 0 7 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 8 0 9 0;
+#X connect 9 0 11 0;
+#X connect 10 0 8 0;
+#X connect 11 0 7 0;
+#X restore 38 78 pd jaw;
+#N canvas 1 110 631 351 left_eye 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 280 182 route float;
+#X obj 280 204 sel 1;
+#X obj 280 161 route gem_state;
+#X msg 156 170 position LEFT_EYE;
+#X msg 168 252 draw lineloop \, colorG colorR \, colorA colorA \, draw_range
+0 6;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 1 10 0;
+#X connect 5 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 38 98 pd left_eye;
+#N canvas 1 115 631 351 right_eye 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 280 182 route float;
+#X obj 280 204 sel 1;
+#X obj 280 161 route gem_state;
+#X msg 156 170 position RIGHT_EYE;
+#X msg 168 252 draw lineloop \, colorG colorR \, colorA colorA \, draw_range
+0 6;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 1 10 0;
+#X connect 5 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 38 118 pd right_eye;
+#N canvas 352 670 631 351 right_eyebrow 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 318 176 route float;
+#X obj 318 198 sel 1;
+#X obj 318 155 route gem_state;
+#X msg 156 170 position RIGHT_EYEBROW;
+#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \,
+draw_range 0 5;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 1 10 0;
+#X connect 5 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 38 138 pd right_eyebrow;
+#N canvas 596 689 631 351 right_eyebrow 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 318 176 route float;
+#X obj 318 198 sel 1;
+#X obj 318 155 route gem_state;
+#X msg 156 170 position LEFT_EYEBROW;
+#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \,
+draw_range 0 5;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 1 10 0;
+#X connect 5 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 38 158 pd right_eyebrow;
+#N canvas 592 699 631 351 nose_base 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 318 176 route float;
+#X obj 318 198 sel 1;
+#X obj 318 155 route gem_state;
+#X msg 156 170 position NOSE_BASE;
+#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \,
+draw_range 0 5;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 1 10 0;
+#X connect 5 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 38 178 pd nose_base;
+#N canvas 592 699 631 351 nose_bridge 0;
+#X obj 128 124 translateXYZ -0.5 -0.5 0;
+#X obj 128 101 scaleXYZ 10.6666 -8 1;
+#X obj 128 76 alpha 0;
+#X obj 128 40 gemhead 10000;
+#X obj 128 146 t a b b;
+#X obj 128 21 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 128 304 gemvertexbuffer 200;
+#X obj 318 176 route float;
+#X obj 318 198 sel 1;
+#X obj 318 155 route gem_state;
+#X msg 156 170 position NOSE_BRIDGE;
+#X msg 168 252 draw linestrip \, colorG colorR \, colorA colorA \,
+draw_range 0 4;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 1 10 0;
+#X connect 5 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 38 198 pd nose_bridge;
+#N canvas 980 217 548 451 inner_mouse 0;
+#X obj 25 145 translateXYZ -0.5 -0.5 0;
+#X obj 25 122 scaleXYZ 10.6666 -8 1;
+#X obj 25 97 alpha 0;
+#X obj 25 71 gemhead 10000;
+#X obj 25 52 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 221 203 route float;
+#X obj 221 225 sel 1;
+#X obj 221 182 route gem_state;
+#X obj 25 167 t a b b;
+#X obj 25 375 gemvertexbuffer 200;
+#X msg 45 191 position INNER_MOUTH;
+#X floatatom 157 77 5 0 0 0 - - -;
+#X msg 81 253 draw lineloop \, colorG colorR \, colorA colorA \, draw_range
+0 8;
+#X connect 0 0 8 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 12 0;
+#X connect 7 0 5 0;
+#X connect 8 0 9 0;
+#X connect 8 1 10 0;
+#X connect 10 0 9 0;
+#X connect 11 0 1 1;
+#X connect 12 0 9 0;
+#X restore 38 48 pd inner_mouse;
+#X restore 490 366 pd draw_contour_gemvertexbuffer;
+#X obj 488 313 rectangle 5.3333 4;
+#N canvas 1 205 450 300 settab 0;
+#X obj 60 76 loadbang;
+#X obj 60 224 outlet;
+#X msg 73 178 settab OUTER_MOUTH MOUTH;
+#X msg 60 96 settab LEFT_EYE LEFT_EYE \, settab RIGHT_EYE RIGHT_EYE
+\, settab OUTER_MOUTH MOUTH \, settab JAW JAW \, settab NOSE_BRIDGE
+NOSE_BRIDGE \, settab NOSE_BASE NOSE_BASE \, settab INNER_MOUTH INNER_MOUTH
+\, settab RIGHT_EYEBROW RIGHT_EYEBROW \, settab LEFT_EYEBROW LEFT_EYEBROW
+;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X restore 501 150 pd settab;
+#N canvas 118 701 450 349 fill_tables 0;
+#X obj 196 84 until;
+#X obj 196 106 f;
+#X obj 221 106 + 1;
+#X obj 196 20 loadbang;
+#X obj 196 148 t b f;
+#X obj 196 200 tabwrite colorR;
+#X obj 186 220 tabwrite colorA;
+#X msg 196 170 1;
+#X obj 196 40 t b b;
+#X msg 250 67 0;
+#X obj 177 21 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 196 63 200;
+#X obj -111 45 table LEFT_EYE 100;
+#X obj -111 65 table RIGHT_EYE 100;
+#X obj -111 85 table MOUTH 100;
+#X obj -111 145 table JAW 100;
+#X obj -111 165 table NOSE_BRIDGE 100;
+#X obj -111 105 table INNER_MOUTH 100;
+#X obj -111 185 table NOSE_BASE 100;
+#X obj -111 205 table FACE_OUTLINE 100;
+#X obj -111 264 table colorR 100;
+#X obj -110 285 table colorA 100;
+#X obj -111 5 table LEFT_EYEBROW 100;
+#X obj -111 25 table RIGHT_EYEBROW 100;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 8 0;
+#X connect 4 0 7 0;
+#X connect 4 1 5 1;
+#X connect 4 1 6 1;
+#X connect 7 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 11 0;
+#X connect 8 1 9 0;
+#X connect 9 0 1 1;
+#X connect 10 0 8 0;
+#X connect 11 0 0 0;
+#X restore 490 386 pd fill_tables;
+#X obj 488 219 pix_opencv_facetracker;
+#X text 27 137 supported features : LEFT_EYEBROW \, RIGHT_EYEBROW \,
+LEFT_EYE \, RIGHT_EYE \, LEFT_JAW \, RIGHT_JAW \, JAW \, OUTER_MOUTH
+\, INNER_MOUTH \, NOSE_BRIDGE \, NOSE_BASE \, FACE_OUTLINE \, ALL_FEATURES
+;
+#X obj 488 119 pix_rgba;
+#X connect 11 0 12 0;
+#X connect 12 0 11 0;
+#X connect 17 0 20 0;
+#X connect 18 0 40 0;
+#X connect 19 0 43 0;
+#X connect 20 0 45 0;
+#X connect 26 0 43 0;
+#X connect 27 0 26 0;
+#X connect 30 0 43 0;
+#X connect 31 0 30 0;
+#X connect 32 0 33 0;
+#X connect 33 0 43 0;
+#X connect 34 0 43 0;
+#X connect 35 0 34 0;
+#X connect 41 0 43 0;
+#X connect 43 0 18 0;
+#X connect 45 0 43 0;
diff --git a/help/pix_opencv_findchessboardcorners-help.pd b/help/pix_opencv_findchessboardcorners-help.pd
new file mode 100644
index 0000000..40bc6f1
--- /dev/null
+++ b/help/pix_opencv_findchessboardcorners-help.pd
@@ -0,0 +1,185 @@
+#N canvas 259 316 996 571 10;
+#X obj -64 52 cnv 15 430 350 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj -64 6 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text -55 10 Arguments:;
+#X obj -65 -90 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text -34 26 none;
+#X obj 372 -157 cnv 15 540 560 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 525 238 cnv 15 380 120 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 530 -150 gemhead;
+#X obj 531 365 pix_texture;
+#X obj 685 161 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 695 205 pd gemwin;
+#X msg 695 187 destroy;
+#X obj 379 365 pix_texture;
+#X obj 531 196 separator;
+#X obj 542 -131 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 599 44 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 581 9 5 0 10000 1 frame# - -;
+#X obj 542 -102 openpanel;
+#X msg 542 -82 open \$1;
+#X obj 530 27 pix_film;
+#X msg 548 -39 auto \$1;
+#X obj 548 -57 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 693 167 Create window and render;
+#X msg 605 -39 colorspace RGBA;
+#X msg 612 -16 colorspace Grey;
+#X obj 605 -79 loadbang;
+#X obj 531 178 pix_separator;
+#X obj 379 196 separator;
+#X obj 379 177 pix_separator;
+#X obj 379 214 translateXYZ -2 0 0;
+#X obj 531 214 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 379 67 pd vswitch;
+#X obj 456 67 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 379 -150 gemhead;
+#X msg 413 -80 device 0;
+#X msg 404 -104 dialog;
+#X obj 379 25 pix_video;
+#X obj 379 386 square 2;
+#X obj 531 387 square 2;
+#X obj 531 331 pix_opencv_findchessboardcorners;
+#X text -57 -82 pix_opencv_findchessboardcorners :: Search inner corners
+coordinates of a known chessboard pattern;
+#X text -55 61 It is useful to calibration severals cameras togehter
+or camera(s) and video beamer(s)...;
+#X obj 379 149 pix_gray;
+#X msg 427 -29 driver 0;
+#X obj 720 383 print;
+#X obj 449 130 spigot;
+#X obj 449 149 pix_rgba;
+#X obj 379 130 spigot 1;
+#X obj 482 108 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 499 108 switch gray/color;
+#X text 683 363 print out raw corners coordinates...;
+#X obj 545 267 pack 6 7;
+#X floatatom 545 247 5 0 0 0 - - -;
+#X floatatom 598 247 5 0 0 0 - - -;
+#X msg 423 -54 device /dev/video0;
+#X msg 545 287 patternSize \$1 \$2;
+#X text 555 307 pattern size (number of inner corners in each direction)
+;
+#X obj 424 109 == 0;
+#X obj 379 86 pix_resize 640 480;
+#X obj 456 45 loadbang;
+#X text -58 -110 pix_opencv_findchessboardcorners :;
+#X connect 7 0 19 0;
+#X connect 8 0 38 0;
+#X connect 10 0 11 0;
+#X connect 11 0 10 0;
+#X connect 12 0 37 0;
+#X connect 13 0 30 0;
+#X connect 14 0 17 0;
+#X connect 15 0 16 0;
+#X connect 16 0 19 1;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 31 1;
+#X connect 19 2 15 0;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 23 0 19 0;
+#X connect 23 0 36 0;
+#X connect 24 0 19 0;
+#X connect 25 0 23 0;
+#X connect 25 0 21 0;
+#X connect 26 0 13 0;
+#X connect 27 0 29 0;
+#X connect 28 0 27 0;
+#X connect 29 0 12 0;
+#X connect 30 0 39 0;
+#X connect 31 0 58 0;
+#X connect 32 0 31 2;
+#X connect 33 0 36 0;
+#X connect 34 0 36 0;
+#X connect 35 0 36 0;
+#X connect 36 0 31 0;
+#X connect 39 0 8 0;
+#X connect 39 1 44 0;
+#X connect 42 0 28 0;
+#X connect 42 0 26 0;
+#X connect 43 0 36 0;
+#X connect 45 0 46 0;
+#X connect 46 0 26 0;
+#X connect 46 0 28 0;
+#X connect 47 0 42 0;
+#X connect 48 0 45 1;
+#X connect 48 0 57 0;
+#X connect 51 0 55 0;
+#X connect 52 0 51 0;
+#X connect 53 0 51 1;
+#X connect 54 0 36 0;
+#X connect 55 0 39 0;
+#X connect 57 0 47 1;
+#X connect 58 0 47 0;
+#X connect 58 0 45 0;
+#X connect 59 0 32 0;
diff --git a/help/pix_opencv_floodfill-help.pd b/help/pix_opencv_floodfill-help.pd
new file mode 100644
index 0000000..4655918
--- /dev/null
+++ b/help/pix_opencv_floodfill-help.pd
@@ -0,0 +1,209 @@
+#N canvas 194 115 986 717 10;
+#X obj -177 159 cnv 15 430 520 empty empty empty 20 12 0 14 -233017
+-66577 0;
+#X obj -177 113 cnv 15 430 40 empty empty empty 20 12 0 14 -195568
+-66577 0;
+#X text -168 117 Arguments:;
+#X obj -177 18 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text -147 137 none;
+#X obj 260 -34 cnv 15 520 710 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 30 604 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 67 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 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 268 69 pd Gem.init;
+#X obj 162 241 gemwin;
+#X msg 161 188 create \, 1;
+#X msg 237 189 destroy;
+#X msg 188 161 dimen 320 240;
+#X obj 164 126 t b b b;
+#X msg 279 161 frame 25;
+#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 1 9 0;
+#X connect 10 2 11 0;
+#X connect 11 0 6 0;
+#X restore 37 650 pd gemwin;
+#X msg 38 628 create;
+#X text 38 607 Create window and render;
+#X obj 268 273 cnv 15 500 350 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 275 516 pix_opencv_floodfill;
+#X text -170 172 used in tracking algorithms as an object selector
+;
+#X text -172 201 and Yves Degoyon ( ydegoyon@gmail.com );
+#X text -175 23 pdp_opencv_floodfill : mark image components with a
+specific color;
+#X text -170 187 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X floatatom 366 468 5 0 0 0 - - -;
+#X floatatom 374 489 5 0 0 0 - - -;
+#X msg 310 299 mark \$1 \$2;
+#X msg 357 448 color \$1;
+#X obj 419 449 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 445 447 activate color mode ( default : on );
+#X msg 341 374 fillcolor 1 255 0 123;
+#X text 479 375 fillcolor of nth component ( 1 < n < 10 );
+#X msg 325 327 delete 1;
+#X msg 339 349 clear;
+#X text 385 327 delete a component ( 1 <= index <= 10 );
+#X text 388 349 delete all components;
+#X text 439 410 set connectivity ( default 4 );
+#X text 408 468 lower tolerance ( default 20 );
+#X text 414 488 upper tolerance ( default 20 );
+#X obj 392 544 route 0 1 2 3 4 5 6 7 8 9;
+#X floatatom 392 587 5 0 0 0 - - -;
+#X floatatom 428 588 5 0 0 0 - - -;
+#X floatatom 464 588 5 0 0 0 - - -;
+#X floatatom 500 588 5 0 0 0 - - -;
+#X obj 392 565 unpack f f f f;
+#X text 394 604 X;
+#X text 431 604 Y;
+#X text 463 605 Width;
+#X text 501 605 Height;
+#X text 551 545 detected components;
+#X msg 345 399 connectivity 4;
+#X msg 347 422 connectivity 8;
+#X obj 513 -1 gemhead;
+#X obj 275 628 pix_texture;
+#X obj 525 26 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 582 201 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 564 166 5 0 10000 1 frame# - -;
+#X obj 525 55 openpanel;
+#X msg 525 75 open \$1;
+#X obj 513 184 pix_film;
+#X msg 531 118 auto \$1;
+#X obj 531 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X msg 626 101 colorspace RGBA;
+#X msg 637 121 colorspace RGB;
+#X msg 650 140 colorspace Grey;
+#X obj 626 73 loadbang;
+#N canvas 2 83 450 300 vswitch 0;
+#X obj 36 131 outlet;
+#X obj 36 26 inlet;
+#X obj 130 26 inlet;
+#X obj 175 26 inlet;
+#X obj 81 73 == 0;
+#X obj 36 93 spigot 1;
+#X obj 130 95 spigot 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 3 0 6 1;
+#X connect 4 0 5 1;
+#X connect 5 0 0 0;
+#X connect 6 0 0 0;
+#X restore 276 214 pd vswitch;
+#X obj 344 214 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 276 182 pix_video;
+#X obj 276 -6 gemhead;
+#X msg 315 107 device 0;
+#X msg 324 138 driver 1;
+#X msg 301 53 dialog;
+#X msg 306 83 device /dev/dv1394-0;
+#X obj 275 647 rectangle 5.3 4;
+#X text 384 299 mark x y : mark a component;
+#X obj 276 252 pix_resize 320 240;
+#X obj 276 233 pix_rgba;
+#N canvas 1 83 450 300 gemmouse 0;
+#X obj 74 28 gemmouse;
+#X obj 130 135 f;
+#X obj 100 134 f;
+#X obj 144 106 t b b;
+#X obj 100 162 pack f f;
+#X obj 120 56 route 1;
+#X msg 141 81 bang;
+#X floatatom 22 69 5 0 0 0 - - -;
+#X floatatom 70 68 5 0 0 0 - - -;
+#X obj 100 185 outlet;
+#X connect 0 0 7 0;
+#X connect 0 0 2 1;
+#X connect 0 1 8 0;
+#X connect 0 1 1 1;
+#X connect 0 2 5 0;
+#X connect 1 0 4 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 3 1 1 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X restore 310 279 pd gemmouse;
+#X connect 7 0 8 0;
+#X connect 8 0 7 0;
+#X connect 11 0 45 0;
+#X connect 11 1 31 0;
+#X connect 16 0 11 1;
+#X connect 17 0 11 2;
+#X connect 18 0 11 0;
+#X connect 19 0 11 0;
+#X connect 20 0 19 0;
+#X connect 22 0 11 0;
+#X connect 24 0 11 0;
+#X connect 25 0 11 0;
+#X connect 31 0 36 0;
+#X connect 36 0 32 0;
+#X connect 36 1 33 0;
+#X connect 36 2 34 0;
+#X connect 36 3 35 0;
+#X connect 42 0 11 0;
+#X connect 43 0 11 0;
+#X connect 44 0 51 0;
+#X connect 45 0 66 0;
+#X connect 46 0 49 0;
+#X connect 47 0 48 0;
+#X connect 48 0 51 1;
+#X connect 49 0 50 0;
+#X connect 50 0 51 0;
+#X connect 51 0 58 1;
+#X connect 51 2 47 0;
+#X connect 52 0 51 0;
+#X connect 53 0 52 0;
+#X connect 54 0 51 0;
+#X connect 54 0 60 0;
+#X connect 55 0 51 0;
+#X connect 56 0 51 0;
+#X connect 57 0 54 0;
+#X connect 57 0 53 0;
+#X connect 58 0 69 0;
+#X connect 59 0 58 2;
+#X connect 60 0 58 0;
+#X connect 61 0 60 0;
+#X connect 62 0 60 0;
+#X connect 63 0 60 0;
+#X connect 64 0 60 0;
+#X connect 65 0 60 0;
+#X connect 68 0 11 0;
+#X connect 69 0 68 0;
+#X connect 70 0 18 0;
diff --git a/help/pix_opencv_haarcascade-help.pd b/help/pix_opencv_haarcascade-help.pd
new file mode 100644
index 0000000..43f62cc
--- /dev/null
+++ b/help/pix_opencv_haarcascade-help.pd
@@ -0,0 +1,204 @@
+#N canvas 428 140 1265 709 10;
+#X obj 5 12 cnv 15 430 500 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 5 -34 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 14 -30 Arguments:;
+#X obj 5 -129 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 35 -10 none;
+#X obj 441 -187 cnv 15 810 700 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 595 165 cnv 15 650 300 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 727 448 5 0 0 0 - - -;
+#X floatatom 762 448 5 0 0 0 - - -;
+#X floatatom 799 448 5 0 0 0 - - -;
+#X obj 598 370 pix_opencv_haarcascade;
+#X obj 684 169 openpanel;
+#X obj 727 410 route 0 1 2 3 4;
+#X text 840 449 Xcenter Ycenter Radius;
+#X obj 727 429 unpack 0 0 0;
+#X msg 624 170 load \$1;
+#X text 774 171 Load a trained cascade classifier from XML file;
+#X obj 754 169 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X floatatom 791 266 5 0 0 0 - - -;
+#X floatatom 745 237 5 0 0 0 - - -;
+#X msg 644 203 mode \$1;
+#X obj 705 203 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 654 236 min_size \$1;
+#X msg 668 263 min_neighbors \$1;
+#X text 829 255 Minimum number (minus 1) of neighbor rectangles that
+makes up an object (default 2);
+#X msg 697 296 scale_factor \$1;
+#X floatatom 815 296 5 0 0 0 - - -;
+#X text 852 290 The factor by which the search window is scaled between
+the subsequent scans (default 1.1);
+#X text 825 411 For each object detected;
+#X floatatom 662 391 5 0 0 0 - - -;
+#X text 701 391 number of objects detected;
+#X text 786 238 Minimum size of object (default 30);
+#X msg 725 325 ftolerance \$1;
+#X floatatom 815 326 5 0 0 0 - - -;
+#X msg 730 349 clear;
+#X text 856 333 temporarily ( default 5 );
+#X text 856 321 number of frames where an object can disappear;
+#X text 775 350 clear markers history;
+#X text 727 200 Mode of operation. Currently the only flag that may
+be specified is CV_HAAR_DO_CANNY_PRUNING ( 0 );
+#X text 16 22 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 pix_threshold to obtain a correct input for pix_opencv_contours_boundingrect.
+;
+#X text 17 75 pix_opencv_contours_convexhull works detecting the bigest
+white area in the input image \, sometimes you will need to use pix_opencv_morphology
+to transform the contours of the shape to be analyzed..;
+#X text 13 -120 pix_opencv_contours_convexhull :: Finds convexhull
+of the bigest contour of a binary image.;
+#X obj 633 -174 gemhead;
+#X obj 598 469 pix_texture;
+#X obj 598 488 square 2;
+#X obj 1025 432 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 1035 476 pd gemwin;
+#X msg 1035 458 create;
+#X obj 446 470 pix_texture;
+#X obj 446 489 square 2;
+#X obj 598 106 separator;
+#X obj 645 -147 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 702 28 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 684 -7 5 0 10000 1 frame# - -;
+#X obj 645 -118 openpanel;
+#X msg 645 -98 open \$1;
+#X obj 633 11 pix_film;
+#X msg 651 -55 auto \$1;
+#X obj 651 -73 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 1033 438 Create window and render;
+#X msg 746 -72 colorspace RGBA;
+#X msg 764 -52 colorspace RGB;
+#X msg 783 -33 colorspace Grey;
+#X obj 746 -100 loadbang;
+#X obj 598 87 pix_separator;
+#X obj 446 109 separator;
+#X obj 446 90 pix_separator;
+#X obj 446 128 translateXYZ -2 0 0;
+#X obj 598 125 translateXYZ 2 0 0;
+#N canvas 1 83 450 300 vswitch 0;
+#X obj 36 237 outlet;
+#X obj 36 26 inlet;
+#X obj 260 29 inlet;
+#X obj 399 34 inlet;
+#X obj 36 133 spigot 1;
+#X obj 260 141 spigot 0;
+#X obj 81 108 == 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 5 1;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 1;
+#X restore 446 41 pd vswitch;
+#X obj 514 41 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 446 9 pix_video;
+#X obj 446 -179 gemhead;
+#X msg 485 -66 device 0;
+#X msg 494 -35 driver 1;
+#X msg 471 -120 dialog;
+#X msg 476 -90 device /dev/dv1394-0;
+#X obj 598 144 pix_resize 320 240;
+#X obj 446 60 pix_rgba;
+#X connect 10 0 43 0;
+#X connect 10 1 29 0;
+#X connect 10 2 12 0;
+#X connect 11 0 15 0;
+#X connect 12 0 14 0;
+#X connect 14 0 7 0;
+#X connect 14 1 8 0;
+#X connect 14 2 9 0;
+#X connect 15 0 10 0;
+#X connect 17 0 11 0;
+#X connect 18 0 23 0;
+#X connect 19 0 22 0;
+#X connect 20 0 10 0;
+#X connect 21 0 20 0;
+#X connect 22 0 10 0;
+#X connect 23 0 10 0;
+#X connect 25 0 10 0;
+#X connect 26 0 25 0;
+#X connect 32 0 10 0;
+#X connect 33 0 32 0;
+#X connect 34 0 10 0;
+#X connect 42 0 56 0;
+#X connect 43 0 44 0;
+#X connect 46 0 47 0;
+#X connect 47 0 46 0;
+#X connect 48 0 49 0;
+#X connect 50 0 68 0;
+#X connect 51 0 54 0;
+#X connect 52 0 53 0;
+#X connect 53 0 56 1;
+#X connect 54 0 55 0;
+#X connect 55 0 56 0;
+#X connect 56 0 69 1;
+#X connect 56 2 52 0;
+#X connect 57 0 56 0;
+#X connect 58 0 57 0;
+#X connect 60 0 56 0;
+#X connect 60 0 71 0;
+#X connect 61 0 56 0;
+#X connect 62 0 56 0;
+#X connect 63 0 60 0;
+#X connect 63 0 58 0;
+#X connect 64 0 50 0;
+#X connect 65 0 67 0;
+#X connect 66 0 65 0;
+#X connect 67 0 48 0;
+#X connect 68 0 77 0;
+#X connect 69 0 78 0;
+#X connect 70 0 69 2;
+#X connect 71 0 69 0;
+#X connect 72 0 71 0;
+#X connect 73 0 71 0;
+#X connect 74 0 71 0;
+#X connect 75 0 71 0;
+#X connect 76 0 71 0;
+#X connect 77 0 10 0;
+#X connect 78 0 66 0;
+#X connect 78 0 64 0;
diff --git a/help/pix_opencv_hist_compare-help.pd b/help/pix_opencv_hist_compare-help.pd
new file mode 100644
index 0000000..8d53114
--- /dev/null
+++ b/help/pix_opencv_hist_compare-help.pd
@@ -0,0 +1,168 @@
+#N canvas 639 272 1101 588 10;
+#X obj 5 20 cnv 15 430 350 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 5 -26 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 14 -22 Arguments:;
+#X obj 5 -121 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 35 -2 none;
+#X obj 447 -179 cnv 15 650 550 empty empty empty 20 12 0 14 -228992
+-66577 0;
+#X obj 589 143 cnv 15 500 180 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 678 148 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X text 761 147 save an histogram at position nth ( 0 <= n <= 80 )
+;
+#X floatatom 682 279 5 0 0 0 - - -, f 5;
+#X obj 744 204 unpack f f f f f;
+#X text 837 239 nearest to 1 is the winner;
+#X text 718 280 closest histogram (winner);
+#X obj 744 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#X obj 767 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#X obj 790 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#X obj 813 232 vsl 15 37 0 1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#X text 836 228 matching measure with stored histograms;
+#X obj 603 173 pix_opencv_hist_compare;
+#X obj 688 -169 gemhead;
+#X obj 603 331 pix_texture;
+#X obj 603 350 square 2;
+#X obj 869 289 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 50 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 879 333 pd gemwin;
+#X msg 879 315 create;
+#X obj 451 331 pix_texture;
+#X obj 451 352 square 2;
+#X obj 603 105 separator;
+#X obj 700 -142 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 757 33 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 739 -2 5 0 10000 1 frame# - -, f 5;
+#X obj 700 -113 openpanel;
+#X msg 700 -93 open \$1;
+#X obj 688 16 pix_film;
+#X msg 706 -50 auto \$1;
+#X obj 706 -68 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 877 295 Create window and render;
+#X msg 801 -67 colorspace RGBA;
+#X msg 812 -46 colorspace RGB;
+#X msg 824 -25 colorspace Grey;
+#X obj 801 -95 loadbang;
+#X obj 603 86 pix_separator;
+#X obj 451 106 separator;
+#X obj 451 87 pix_separator;
+#X obj 603 123 translateXYZ 2 0 0;
+#N canvas 1 83 450 300 vswitch 0;
+#X obj 36 214 outlet;
+#X obj 36 26 inlet;
+#X obj 260 29 inlet;
+#X obj 399 34 inlet;
+#X obj 36 133 spigot 1;
+#X obj 260 141 spigot 0;
+#X obj 81 111 == 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 5 1;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 1;
+#X restore 451 38 pd vswitch;
+#X obj 519 38 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 451 -174 gemhead;
+#X msg 490 -61 device 0;
+#X msg 499 -30 driver 1;
+#X msg 476 -115 dialog;
+#X msg 481 -85 device /dev/dv1394-0;
+#X text 21 -88 record histograms of specific situations;
+#X text 23 -76 the object will recognize the situations if they occur
+again;
+#X text 23 -62 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text 14 -114 pix_opencv_hist_compare : image recognition using histograms
+;
+#X obj 451 58 pix_rgba;
+#X obj 451 14 pix_video;
+#X obj 451 124 translateXYZ -2 0 0;
+#X connect 7 0 18 1;
+#X connect 10 0 13 0;
+#X connect 10 1 14 0;
+#X connect 10 2 15 0;
+#X connect 10 3 16 0;
+#X connect 18 0 20 0;
+#X connect 18 1 9 0;
+#X connect 18 2 10 0;
+#X connect 19 0 33 0;
+#X connect 20 0 21 0;
+#X connect 23 0 24 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 27 0 44 0;
+#X connect 28 0 31 0;
+#X connect 29 0 30 0;
+#X connect 30 0 33 1;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 45 1;
+#X connect 33 2 29 0;
+#X connect 34 0 33 0;
+#X connect 35 0 34 0;
+#X connect 37 0 33 0;
+#X connect 37 0 57 0;
+#X connect 38 0 33 0;
+#X connect 39 0 33 0;
+#X connect 40 0 37 0;
+#X connect 40 0 35 0;
+#X connect 41 0 27 0;
+#X connect 42 0 58 0;
+#X connect 43 0 42 0;
+#X connect 44 0 18 0;
+#X connect 45 0 56 0;
+#X connect 46 0 45 2;
+#X connect 47 0 57 0;
+#X connect 48 0 57 0;
+#X connect 49 0 57 0;
+#X connect 50 0 57 0;
+#X connect 51 0 57 0;
+#X connect 56 0 43 0;
+#X connect 56 0 41 0;
+#X connect 57 0 45 0;
+#X connect 58 0 25 0;
diff --git a/help/pix_opencv_hough_circles-help.pd b/help/pix_opencv_hough_circles-help.pd
new file mode 100644
index 0000000..9cbdd7f
--- /dev/null
+++ b/help/pix_opencv_hough_circles-help.pd
@@ -0,0 +1,191 @@
+#N canvas 501 132 1214 680 10;
+#X obj 5 205 cnv 15 430 470 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 5 159 cnv 15 430 40 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 14 163 Arguments:;
+#X obj 5 64 cnv 15 430 90 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 35 183 none;
+#X obj 445 5 cnv 15 760 670 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 599 357 cnv 15 600 270 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 605 527 pix_opencv_hough_circles;
+#X obj 788 494 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 703 492 nightmode \$1;
+#X text 807 495 set nightmode;
+#X floatatom 726 390 5 0 0 0 - - -;
+#X msg 637 387 threshold \$1;
+#X floatatom 771 456 5 0 0 0 - - -;
+#X floatatom 790 475 5 0 0 0 - - -;
+#X floatatom 712 369 5 0 0 0 - - -;
+#X msg 622 368 maxcircles \$1;
+#X text 752 368 maximum nuber of circles detected ( default : 10 )
+;
+#X floatatom 748 407 5 0 0 0 - - -;
+#X msg 660 406 threshold2 \$1;
+#X text 672 420 see documentation of cvHoughCircles for the meaning
+of thresholds;
+#X msg 685 455 mindist \$1;
+#X text 808 454 minimum distance between circles ( default : 30 );
+#X msg 690 473 resolution \$1;
+#X text 833 474 detector resolution ( default 1 );
+#X text 765 386 threshold ( default 100 );
+#X text 787 402 threshold2 ( default 10 );
+#X floatatom 746 588 5 0 0 0 - - -;
+#X floatatom 782 589 5 0 0 0 - - -;
+#X obj 746 548 route 1 2 3 4 5 6 7 8 9 10;
+#X text 749 602 X1;
+#X text 785 602 Y1;
+#X floatatom 819 589 5 0 0 0 - - -;
+#X text 915 548 position of each circle;
+#X text 822 603 radius;
+#X obj 746 569 unpack f f f;
+#X text 12 208 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+) and Yves Degoyon ( ydegoyon@gmail.com );
+#X text 13 70 pix_opencv_hough_circles : Hough circles detection algorithm
+;
+#X obj 656 18 gemhead;
+#X obj 605 631 pix_texture;
+#X obj 605 650 square 2;
+#X obj 977 15 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 987 59 pd gemwin;
+#X msg 987 41 create;
+#X obj 453 631 pix_texture;
+#X obj 453 650 square 2;
+#X obj 605 293 separator;
+#X obj 668 45 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 725 220 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 707 185 5 0 10000 1 frame# - -;
+#X obj 668 74 openpanel;
+#X msg 668 94 open \$1;
+#X obj 656 203 pix_film;
+#X msg 674 137 auto \$1;
+#X obj 674 119 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 985 21 Create window and render;
+#X msg 769 120 colorspace RGBA;
+#X msg 780 139 colorspace RGB;
+#X msg 796 158 colorspace Grey;
+#X obj 769 92 loadbang;
+#X obj 605 274 pix_separator;
+#X obj 453 294 separator;
+#X obj 453 275 pix_separator;
+#X obj 453 314 translateXYZ -2 0 0;
+#X obj 605 313 translateXYZ 2 0 0;
+#N canvas 1 83 450 300 vswitch 0;
+#X obj 36 127 outlet;
+#X obj 36 27 inlet;
+#X obj 110 27 inlet;
+#X obj 155 26 inlet;
+#X obj 36 93 spigot 1;
+#X obj 110 94 spigot 0;
+#X obj 81 71 == 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 5 1;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 1;
+#X restore 453 228 pd vswitch;
+#X obj 521 228 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 453 201 pix_video;
+#X obj 453 13 gemhead;
+#X msg 492 126 device 0;
+#X msg 501 157 driver 1;
+#X msg 478 72 dialog;
+#X msg 483 102 device /dev/dv1394-0;
+#X obj 605 337 pix_resize 320 240;
+#X obj 453 249 pix_rgba;
+#X connect 7 0 39 0;
+#X connect 7 1 29 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 11 0 12 0;
+#X connect 12 0 7 0;
+#X connect 13 0 21 0;
+#X connect 14 0 23 0;
+#X connect 15 0 16 0;
+#X connect 16 0 7 0;
+#X connect 18 0 19 0;
+#X connect 19 0 7 0;
+#X connect 21 0 7 0;
+#X connect 23 0 7 0;
+#X connect 29 0 35 0;
+#X connect 35 0 27 0;
+#X connect 35 1 28 0;
+#X connect 35 2 32 0;
+#X connect 38 0 52 0;
+#X connect 39 0 40 0;
+#X connect 42 0 43 0;
+#X connect 43 0 42 0;
+#X connect 44 0 45 0;
+#X connect 46 0 64 0;
+#X connect 47 0 50 0;
+#X connect 48 0 49 0;
+#X connect 49 0 52 1;
+#X connect 50 0 51 0;
+#X connect 51 0 52 0;
+#X connect 52 0 65 1;
+#X connect 52 2 48 0;
+#X connect 53 0 52 0;
+#X connect 54 0 53 0;
+#X connect 56 0 52 0;
+#X connect 56 0 67 0;
+#X connect 57 0 52 0;
+#X connect 58 0 52 0;
+#X connect 59 0 56 0;
+#X connect 59 0 54 0;
+#X connect 60 0 46 0;
+#X connect 61 0 63 0;
+#X connect 62 0 61 0;
+#X connect 63 0 44 0;
+#X connect 64 0 73 0;
+#X connect 65 0 74 0;
+#X connect 66 0 65 2;
+#X connect 67 0 65 0;
+#X connect 68 0 67 0;
+#X connect 69 0 67 0;
+#X connect 70 0 67 0;
+#X connect 71 0 67 0;
+#X connect 72 0 67 0;
+#X connect 73 0 7 0;
+#X connect 74 0 62 0;
+#X connect 74 0 60 0;
diff --git a/help/pix_opencv_hough_lines-help.pd b/help/pix_opencv_hough_lines-help.pd
new file mode 100644
index 0000000..b40976c
--- /dev/null
+++ b/help/pix_opencv_hough_lines-help.pd
@@ -0,0 +1,213 @@
+#N canvas 545 63 1680 940 10;
+#X obj 580 463 cnv 15 600 400 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 606 762 pix_opencv_hough_lines;
+#X obj 790 732 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 705 730 nightmode \$1;
+#X text 809 733 set nightmode;
+#X floatatom 736 580 5 0 0 0 - - -;
+#X msg 635 546 mode \$1;
+#X obj 731 517 vradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144
+-1 -1 1;
+#X text 752 517 CV_HOUGH_STANDARD;
+#X text 752 531 CV_HOUGH_PROBABILISTIC;
+#X text 753 547 CV_HOUGN_MULTI_SCALE;
+#X msg 647 577 threshold \$1;
+#X msg 661 607 minlength \$1;
+#X floatatom 747 608 5 0 0 0 - - -;
+#X floatatom 727 634 5 0 0 0 - - -;
+#X msg 676 633 gap \$1;
+#X text 770 634 gap betwwen lines ( default 10 \, for mode CV_HOUGH_PROBABILISTIC
+);
+#X text 784 605 minimum length ( default 30 \, for mode CV_HOUGH_PROBABILISTIC
+);
+#X floatatom 781 672 5 0 0 0 - - -;
+#X floatatom 803 704 5 0 0 0 - - -;
+#X msg 680 670 aresolution \$1;
+#X text 847 700 distance resolution ( default 1 \, for mode CV_HOUGH_MULTI_SCALE
+);
+#X text 819 669 angle resolution ( default 1 \, for mode CV_HOUGH_MULTI_SCALE
+);
+#X msg 621 476 maxlines \$1;
+#X floatatom 700 477 5 0 0 0 - - -;
+#X text 741 473 maximum nuber of lines detected ( default : 10 );
+#X text 775 576 threshold ( default 50 );
+#X text 640 499 Detection mode ( default : CV_HOUGH_PROBABILISTIC )
+;
+#X floatatom 750 831 5 0 0 0 - - -;
+#X floatatom 786 832 5 0 0 0 - - -;
+#X obj 750 791 route 1 2 3 4 5 6 7 8 9 10;
+#X text 919 790 position of each line;
+#X obj 750 811 unpack f f f f;
+#X text 753 845 X1;
+#X text 789 845 Y1;
+#X floatatom 823 832 5 0 0 0 - - -;
+#X floatatom 859 833 5 0 0 0 - - -;
+#X text 826 846 X2;
+#X text 862 846 Y2;
+#X text 41 154 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+) and Yves Degoyon ( ydegoyon@gmail.com );
+#X text 40 139 pix_opencv_hough_lines : Hough lines algorithm;
+#X msg 698 702 dresolution \$1;
+#X obj 725 54 gemhead;
+#X obj 606 884 pix_texture;
+#X obj 606 903 square 2;
+#X obj 43 50 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 53 94 pd gemwin;
+#X msg 53 76 create;
+#X obj 454 691 pix_texture;
+#X obj 454 719 square 2;
+#X obj 606 381 separator;
+#X obj 737 81 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 794 256 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 776 221 5 0 10000 1 frame# - -;
+#X obj 737 110 openpanel;
+#X msg 737 130 open \$1;
+#X obj 725 239 pix_film;
+#X msg 743 173 auto \$1;
+#X obj 743 155 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 51 56 Create window and render;
+#X msg 838 156 colorspace RGBA;
+#X msg 943 156 colorspace RGB;
+#X msg 1047 156 colorspace Grey;
+#X obj 838 128 loadbang;
+#X obj 605 352 pix_separator;
+#X obj 454 384 separator;
+#X obj 454 355 pix_separator;
+#X obj 454 419 translateXYZ -2 0 0;
+#X obj 606 416 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 547 309 pd vswitch;
+#X obj 615 309 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 488 237 pix_video;
+#X obj 488 49 gemhead;
+#X msg 527 162 device 0;
+#X msg 536 193 driver 1;
+#X msg 513 108 dialog;
+#X msg 518 138 device /dev/dv1394-0;
+#X obj 606 440 pix_resize 320 240;
+#X text 884 547 (WARNING :: only for powerfull machines);
+#X obj 547 329 pix_rgba;
+#X connect 1 0 43 0;
+#X connect 1 1 30 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 11 0;
+#X connect 6 0 1 0;
+#X connect 7 0 6 0;
+#X connect 11 0 1 0;
+#X connect 12 0 1 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
+#X connect 18 0 20 0;
+#X connect 19 0 41 0;
+#X connect 20 0 1 0;
+#X connect 23 0 1 0;
+#X connect 24 0 23 0;
+#X connect 30 0 32 0;
+#X connect 32 0 28 0;
+#X connect 32 1 29 0;
+#X connect 32 2 35 0;
+#X connect 32 3 36 0;
+#X connect 41 0 1 0;
+#X connect 42 0 56 0;
+#X connect 43 0 44 0;
+#X connect 46 0 47 0;
+#X connect 47 0 46 0;
+#X connect 48 0 49 0;
+#X connect 50 0 68 0;
+#X connect 51 0 54 0;
+#X connect 52 0 53 0;
+#X connect 53 0 56 1;
+#X connect 54 0 55 0;
+#X connect 55 0 56 0;
+#X connect 56 0 69 1;
+#X connect 56 2 52 0;
+#X connect 57 0 56 0;
+#X connect 58 0 57 0;
+#X connect 60 0 56 0;
+#X connect 60 0 71 0;
+#X connect 61 0 56 0;
+#X connect 62 0 56 0;
+#X connect 63 0 60 0;
+#X connect 63 0 58 0;
+#X connect 64 0 50 0;
+#X connect 65 0 67 0;
+#X connect 66 0 65 0;
+#X connect 67 0 48 0;
+#X connect 68 0 77 0;
+#X connect 69 0 79 0;
+#X connect 70 0 69 2;
+#X connect 71 0 69 0;
+#X connect 72 0 71 0;
+#X connect 73 0 71 0;
+#X connect 74 0 71 0;
+#X connect 75 0 71 0;
+#X connect 76 0 71 0;
+#X connect 77 0 1 0;
+#X connect 79 0 66 0;
+#X connect 79 0 64 0;
diff --git a/help/pix_opencv_hu_compare-help.pd b/help/pix_opencv_hu_compare-help.pd
new file mode 100644
index 0000000..413d8bc
--- /dev/null
+++ b/help/pix_opencv_hu_compare-help.pd
@@ -0,0 +1,240 @@
+#N canvas 542 83 1154 759 10;
+#X obj 937 -7 gemhead;
+#X obj 375 543 pix_texture;
+#X obj 374 566 square 2;
+#X obj 9 -28 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 14 16 pd gemwin;
+#X msg 14 -5 create;
+#X text 15 -23 Create window and render;
+#X obj 353 225 cnv 15 700 300 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 619 -90 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 676 85 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 658 50 5 0 10000 1 frame# - -;
+#X obj 619 -61 openpanel;
+#X msg 619 -41 open \$1;
+#X obj 607 68 pix_film;
+#X msg 625 2 auto \$1;
+#X obj 625 -16 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 373 395 pix_opencv_hu_compare;
+#X floatatom 491 481 30 0 0 0 - - -;
+#X text 496 464 distance;
+#X obj 707 499 route 1;
+#X obj 759 499 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 668 500 < 0.1;
+#X obj 768 479 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 788 499 criteria value;
+#X floatatom 686 481 10 0 0 0 - - -;
+#X text 528 376 calculating their hu moments ( CvMatchShape );
+#X text 527 364 compares the contours to the pattern reference contour
+;
+#X msg 511 333 criteria \$1;
+#X obj 595 334 r cdist;
+#X text 648 328 criteria value under which the contour is recongnized
+;
+#X text 646 339 ( adjust to your situation : default : 0.1 );
+#X obj 575 283 hradio 15 1 0 3 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X text 626 277 method used for comparison : one of : CV_CONTOURS_MATCH_I1
+\, CV_CONTOURS_MATCH_I2 or CV_CONTOURS_MATCH_I3;
+#X obj 547 282 + 1;
+#X msg 477 282 method \$1;
+#X msg 463 255 minsize \$1;
+#X floatatom 537 256 5 0 0 0 - - -;
+#X text 578 256 minimum size of selected contours ( default : 10x10
+);
+#X msg 513 304 clear;
+#X text 621 304 recalculates the pattern contour;
+#X obj 562 305 r reset;
+#X text 12 -57 Written by Yves Degoyon ( ydegoyon@gmail.com );
+#X text 13 -85 pix_opencv_hu_compare :: compare contours using their
+hu moments using CvMatchShape.;
+#X text 666 -88 playing a video file;
+#X text 684 -75 ( try estrella.mov );
+#X msg 854 -80 bang;
+#X text 900 -87 loading a pattern image;
+#X text 899 -74 ( try estrella.jpg );
+#X text 853 -105 Compare to a pattern;
+#X obj 854 -4 pix_image;
+#X obj 856 -53 openpanel;
+#X msg 855 -26 open \$1;
+#X floatatom 1007 113 5 0 0 0 - - -;
+#X text 836 192 threshold (default 13) to use when comparing pixel
+colors;
+#X obj 1075 86 loadbang;
+#X msg 1044 86 160;
+#X obj 976 85 r tresh;
+#X floatatom 511 185 5 0 0 0 - - -;
+#X obj 579 183 loadbang;
+#X msg 551 183 160;
+#X obj 512 203 s tresh;
+#X obj 985 145 pix_texture;
+#X obj 853 112 pix_opencv_threshold;
+#X obj 378 204 pix_opencv_threshold;
+#X obj 985 173 square 2;
+#X obj 853 58 translateXYZ -2 0 0;
+#X obj 854 26 pix_resize 320 240;
+#X obj 373 130 pix_resize 320 240;
+#X obj 683 -24 loadbang;
+#X msg 683 1 colorspace RGBA;
+#X msg 685 22 colorspace RGB;
+#X msg 746 -25 colorspace Grey;
+#X obj 687 -52 gemhead;
+#X obj 376 180 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 375 98 pd vswitch;
+#X obj 443 98 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 374 60 pix_video;
+#X obj 378 -88 gemhead;
+#X msg 413 -15 device 0;
+#X msg 422 16 driver 1;
+#X msg 399 -69 dialog;
+#X msg 404 -39 device /dev/dv1394-0;
+#X obj 547 415 unpack f f f f f;
+#X text 661 415 position of detected contours;
+#X floatatom 570 437 5 0 0 0 - - -;
+#X floatatom 608 438 5 0 0 0 - - -;
+#X floatatom 648 437 5 0 0 0 - - -;
+#X floatatom 691 438 5 0 0 0 - - -;
+#X text 577 450 X;
+#X text 616 449 Y;
+#X text 648 449 width;
+#X text 689 450 height;
+#X obj 373 156 pix_rgba;
+#X obj 850 150 pix_rgba;
+#X connect 0 0 49 0;
+#X connect 1 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 4 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 1;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 74 1;
+#X connect 13 2 9 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 1 0;
+#X connect 16 1 17 0;
+#X connect 16 2 82 0;
+#X connect 17 0 21 0;
+#X connect 19 0 20 0;
+#X connect 21 0 19 0;
+#X connect 22 0 21 1;
+#X connect 22 0 24 0;
+#X connect 27 0 16 0;
+#X connect 28 0 27 0;
+#X connect 31 0 33 0;
+#X connect 33 0 34 0;
+#X connect 34 0 16 0;
+#X connect 35 0 16 0;
+#X connect 36 0 35 0;
+#X connect 38 0 16 0;
+#X connect 40 0 38 0;
+#X connect 45 0 50 0;
+#X connect 49 0 66 0;
+#X connect 50 0 51 0;
+#X connect 51 0 49 0;
+#X connect 52 0 62 2;
+#X connect 54 0 55 0;
+#X connect 55 0 52 0;
+#X connect 56 0 52 0;
+#X connect 57 0 60 0;
+#X connect 57 0 63 2;
+#X connect 58 0 59 0;
+#X connect 59 0 57 0;
+#X connect 61 0 64 0;
+#X connect 62 0 61 0;
+#X connect 62 0 93 0;
+#X connect 63 0 16 0;
+#X connect 65 0 62 0;
+#X connect 66 0 65 0;
+#X connect 67 0 92 0;
+#X connect 68 0 69 0;
+#X connect 69 0 13 0;
+#X connect 69 0 49 0;
+#X connect 70 0 49 0;
+#X connect 70 0 13 0;
+#X connect 71 0 13 0;
+#X connect 71 0 49 0;
+#X connect 72 0 13 0;
+#X connect 73 0 63 0;
+#X connect 74 0 67 0;
+#X connect 75 0 74 2;
+#X connect 76 0 74 0;
+#X connect 77 0 76 0;
+#X connect 78 0 76 0;
+#X connect 79 0 76 0;
+#X connect 80 0 76 0;
+#X connect 81 0 76 0;
+#X connect 82 1 84 0;
+#X connect 82 2 85 0;
+#X connect 82 3 86 0;
+#X connect 82 4 87 0;
+#X connect 92 0 73 0;
+#X connect 93 0 16 1;
diff --git a/help/pix_opencv_hu_moments-help.pd b/help/pix_opencv_hu_moments-help.pd
new file mode 100644
index 0000000..dcac648
--- /dev/null
+++ b/help/pix_opencv_hu_moments-help.pd
@@ -0,0 +1,147 @@
+#N canvas 625 121 820 711 10;
+#X obj 13 0 gemhead;
+#X obj 30 439 pix_texture;
+#X obj 30 467 square 2;
+#X obj 506 536 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 67 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 171 266 gemwin;
+#X msg 164 226 create \, 1;
+#X msg 252 229 destroy;
+#X msg 292 186 frame 25;
+#X obj 173 176 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 516 580 pd gemwin;
+#X msg 516 562 create;
+#X obj 114 -18 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 114 11 openpanel;
+#X msg 114 31 open \$1;
+#X obj 15 182 cnv 15 400 250 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X text 514 539 Create window and render;
+#X obj 32 235 pix_opencv_hu_moments;
+#X msg 82 197 binary \$1;
+#X obj 152 198 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X text 171 198 treat incoming frames as binary data;
+#X text 187 -19 Written by Yves Degoyon ( ydegoyon@gmail.com );
+#X text 186 -67 pix_opencv_hu_moments :: Calculates the hu moments
+of contours.;
+#X obj 135 256 unpack f f f f f f f;
+#X floatatom 145 283 30 0 0 0 - - h1;
+#X text 125 282 h1;
+#X floatatom 156 305 30 0 0 0 - - h2;
+#X floatatom 167 326 30 0 0 0 - - h3;
+#X floatatom 180 347 30 0 0 0 - - h4;
+#X floatatom 196 369 30 0 0 0 - - h5;
+#X floatatom 208 389 30 0 0 0 - - h6;
+#X floatatom 217 412 30 0 0 0 - - h7;
+#X text 136 304 h2;
+#X text 148 325 h3;
+#X text 161 346 h4;
+#X text 176 368 h5;
+#X text 188 388 h6;
+#X text 197 411 h7;
+#X obj 115 104 pix_image;
+#X text 187 -43 Load here with a simple patterns image and compare
+the moments.;
+#X obj 546 20 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 546 49 openpanel;
+#X msg 546 69 open \$1;
+#X obj 430 185 cnv 15 400 250 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 447 238 pix_opencv_hu_moments;
+#X msg 497 200 binary \$1;
+#X obj 567 201 tgl 15 0 sbin empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X text 593 201 treat incoming frames as binary data;
+#X obj 550 259 unpack f f f f f f f;
+#X floatatom 560 286 30 0 0 0 - - h1;
+#X text 540 285 h1;
+#X floatatom 571 308 30 0 0 0 - - h2;
+#X floatatom 582 329 30 0 0 0 - - h3;
+#X floatatom 595 350 30 0 0 0 - - h4;
+#X floatatom 611 372 30 0 0 0 - - h5;
+#X floatatom 623 392 30 0 0 0 - - h6;
+#X floatatom 632 415 30 0 0 0 - - h7;
+#X text 551 307 h2;
+#X text 563 328 h3;
+#X text 576 349 h4;
+#X text 591 371 h5;
+#X text 603 391 h6;
+#X text 612 414 h7;
+#X obj 484 117 pix_image;
+#X obj 115 133 translateXYZ -2 0 0;
+#X obj 447 445 pix_texture;
+#X obj 447 473 square 2;
+#X floatatom 216 100 5 0 0 0 - - -;
+#X obj 384 9 gemhead;
+#X obj 385 29 translateXYZ 2 0 0;
+#X obj 116 161 pix_rgba;
+#X obj 469 155 pix_rgba;
+#X connect 0 0 32 0;
+#X connect 1 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 32 0;
+#X connect 11 0 1 0;
+#X connect 11 1 17 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;
+#X connect 17 0 18 0;
+#X connect 17 1 20 0;
+#X connect 17 2 21 0;
+#X connect 17 3 22 0;
+#X connect 17 4 23 0;
+#X connect 17 5 24 0;
+#X connect 17 6 25 0;
+#X connect 32 0 58 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 57 0;
+#X connect 38 0 59 0;
+#X connect 38 1 42 0;
+#X connect 39 0 38 0;
+#X connect 40 0 39 0;
+#X connect 42 0 43 0;
+#X connect 42 1 45 0;
+#X connect 42 2 46 0;
+#X connect 42 3 47 0;
+#X connect 42 4 48 0;
+#X connect 42 5 49 0;
+#X connect 42 6 50 0;
+#X connect 57 0 65 0;
+#X connect 58 0 64 0;
+#X connect 59 0 60 0;
+#X connect 61 0 58 1;
+#X connect 62 0 63 0;
+#X connect 63 0 57 0;
+#X connect 64 0 11 0;
+#X connect 65 0 38 0;
diff --git a/help/pix_opencv_knear-help.pd b/help/pix_opencv_knear-help.pd
new file mode 100644
index 0000000..5143dec
--- /dev/null
+++ b/help/pix_opencv_knear-help.pd
@@ -0,0 +1,94 @@
+#N canvas 562 208 1154 642 10;
+#X obj 384 31 gemhead;
+#X obj 365 414 pix_texture;
+#X obj 365 442 square 2;
+#X obj 9 -28 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 5 50 454 304 gemwin 0;
+#X obj 67 89 outlet;
+#X obj 67 10 inlet;
+#X obj 67 39 route create;
+#X msg 67 70 set destroy;
+#X msg 182 68 set create;
+#X msg 156 142 dimen 256 128;
+#X obj 127 212 gemwin;
+#X msg 120 172 create \, 1;
+#X msg 208 175 destroy;
+#X msg 248 132 frame 25;
+#X obj 129 122 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 5 0 6 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 1 5 0;
+#X connect 10 2 9 0;
+#X restore 14 16 pd gemwin;
+#X msg 14 -8 destroy;
+#X text 15 -25 Create window and render;
+#X obj 200 368 pix_texture;
+#X obj 200 396 square 2;
+#X obj 367 159 translateXYZ -2 0 0;
+#X obj 367 193 separator;
+#X obj 343 221 cnv 15 700 180 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 356 -55 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 356 -26 openpanel;
+#X msg 356 -6 open \$1;
+#X obj 364 259 translateXYZ 4 0 0;
+#X text 9 -82 based on basic OCR with Open CV tutorial;
+#X text 9 -71 by damiles : http://blog.damiles.com/?p=93;
+#X text 9 -58 adapted to PD by Yves Degoyon ( ydegoyon@gmail.com )
+;
+#X text 9 -93 pix_opencv_knear : OCR-like pattern recognition;
+#X msg 532 250 bang;
+#X text 571 254 Compare the incoming frame to the patterns;
+#X text 637 281 Load a new set of patterns from a directory;
+#X text 637 294 All patterns should be of the same size;
+#X floatatom 591 355 10 0 0 0 - - -, f 10;
+#X text 663 356 Distance of the incoming frame compared to the patterns
+;
+#X obj 384 72 pix_image;
+#X obj 592 380 print distance;
+#X obj 575 177 loadbang;
+#X obj 382 110 pix_grey;
+#X text 433 -33 load patterns \, create the Gem window and then load
+a character image;
+#X msg 550 283 load plus 15;
+#X obj 367 215 pix_separator;
+#X obj 365 336 pix_opencv_knear;
+#X obj 575 199 t b b;
+#X text 638 309 Directory could be ether relative to patch or absolute
+;
+#X connect 0 0 26 0;
+#X connect 1 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 4 0;
+#X connect 7 0 8 0;
+#X connect 9 0 10 0;
+#X connect 9 0 7 0;
+#X connect 10 0 32 0;
+#X connect 12 0 13 0;
+#X connect 12 0 20 0;
+#X connect 13 0 14 0;
+#X connect 14 0 26 0;
+#X connect 15 0 33 0;
+#X connect 20 0 33 0;
+#X connect 26 0 29 0;
+#X connect 28 0 34 0;
+#X connect 29 0 9 0;
+#X connect 31 0 33 0;
+#X connect 32 0 15 0;
+#X connect 33 0 1 0;
+#X connect 33 1 24 0;
+#X connect 33 1 27 0;
+#X connect 34 0 20 0;
+#X connect 34 1 31 0;
diff --git a/help/pix_opencv_laplace-help.pd b/help/pix_opencv_laplace-help.pd
new file mode 100644
index 0000000..ca44d22
--- /dev/null
+++ b/help/pix_opencv_laplace-help.pd
@@ -0,0 +1,153 @@
+#N canvas 487 97 970 899 10;
+#X obj 347 393 cnv 15 200 70 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 374 435 pix_opencv_laplace;
+#X msg 419 410 1;
+#X msg 453 410 3;
+#X msg 486 410 5;
+#X msg 518 410 7;
+#X text 381 392 aperture size ( default 3 );
+#X text 517 343 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text 517 332 used as an edge detector;
+#X text 516 319 pix_opencv_laplace : laplace filter;
+#X obj 515 232 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 520 276 pd gemwin;
+#X msg 520 255 create;
+#X text 521 237 Create window and render;
+#X obj 493 -11 gemhead;
+#X obj 374 316 separator;
+#X obj 505 16 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 562 191 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 544 156 5 0 10000 1 frame# - -;
+#X obj 505 45 openpanel;
+#X msg 505 65 open \$1;
+#X obj 493 174 pix_film;
+#X msg 511 108 auto \$1;
+#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 606 91 colorspace RGBA;
+#X msg 711 91 colorspace RGB;
+#X msg 815 91 colorspace Grey;
+#X obj 606 63 loadbang;
+#X obj 373 287 pix_separator;
+#X obj 222 319 separator;
+#X obj 222 290 pix_separator;
+#X obj 222 354 translateXYZ -2 0 0;
+#X obj 374 351 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 315 245 pd vswitch;
+#X obj 383 244 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 256 172 pix_video;
+#X obj 256 -16 gemhead;
+#X msg 295 97 device 0;
+#X msg 304 128 driver 1;
+#X msg 281 43 dialog;
+#X msg 286 73 device /dev/dv1394-0;
+#X obj 374 495 pix_texture;
+#X obj 374 514 square 2;
+#X obj 222 491 pix_texture;
+#X obj 222 519 square 2;
+#X obj 316 271 pix_rgba;
+#X connect 1 0 41 0;
+#X connect 2 0 1 1;
+#X connect 3 0 1 1;
+#X connect 4 0 1 1;
+#X connect 5 0 1 1;
+#X connect 11 0 12 0;
+#X connect 12 0 11 0;
+#X connect 14 0 21 0;
+#X connect 15 0 32 0;
+#X connect 16 0 19 0;
+#X connect 17 0 18 0;
+#X connect 18 0 21 1;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 33 1;
+#X connect 21 2 17 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 24 0 21 0;
+#X connect 24 0 35 0;
+#X connect 25 0 21 0;
+#X connect 26 0 21 0;
+#X connect 27 0 24 0;
+#X connect 27 0 23 0;
+#X connect 28 0 15 0;
+#X connect 29 0 31 0;
+#X connect 30 0 29 0;
+#X connect 31 0 43 0;
+#X connect 32 0 1 0;
+#X connect 33 0 45 0;
+#X connect 34 0 33 2;
+#X connect 35 0 33 0;
+#X connect 36 0 35 0;
+#X connect 37 0 35 0;
+#X connect 38 0 35 0;
+#X connect 39 0 35 0;
+#X connect 40 0 35 0;
+#X connect 41 0 42 0;
+#X connect 43 0 44 0;
+#X connect 45 0 30 0;
+#X connect 45 0 28 0;
diff --git a/help/pix_opencv_lk-help.pd b/help/pix_opencv_lk-help.pd
new file mode 100644
index 0000000..8343d60
--- /dev/null
+++ b/help/pix_opencv_lk-help.pd
@@ -0,0 +1,242 @@
+#N canvas 331 42 1192 685 10;
+#X obj 141 -12 cnv 15 700 450 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 288 328 5 0 0 0 - - -;
+#X text 323 327 window size;
+#X obj 353 70 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 268 68 nightmode \$1;
+#X text 372 71 set nightmode;
+#X msg 263 42 quality \$1;
+#X floatatom 338 43 5 0 0 0 - - -;
+#X floatatom 346 18 5 0 0 0 - - -;
+#X msg 249 17 mindistance \$1;
+#X text 387 16 set distance ( default 10 );
+#X msg 242 -11 init;
+#X text 311 -11 init point detections;
+#X floatatom 431 43 5 0 0 0 - - -;
+#X obj 376 41 / 1000;
+#X msg 294 136 mark \$1 \$2;
+#X msg 308 157 delete \$1;
+#X text 502 157 delete a marker;
+#X msg 316 177 clear;
+#X text 364 178 delete all markers;
+#X msg 322 197 maxmove \$1;
+#X floatatom 398 199 5 0 0 0 - - -;
+#X text 563 42 set quality ( default 100 );
+#X msg 471 41 100;
+#X obj 504 41 loadbang;
+#X obj 285 383 unpack f f;
+#X floatatom 286 408 5 0 0 0 - - -;
+#X floatatom 344 409 5 0 0 0 - - -;
+#X text 287 424 X;
+#X text 342 425 Y;
+#X obj 284 357 route 1 2 3 4 5 6 7 8 9 10;
+#X text 450 306 position of each marked point;
+#X obj 178 346 pix_opencv_lk;
+#X obj 664 -167 gemmouse;
+#X obj 678 -133 f;
+#X obj 648 -134 f;
+#X obj 734 -89 t b b;
+#X obj 645 -89 pack f f;
+#X text 373 137 mark x y : mark a point to track ( max points : 10
+);
+#X obj 710 -139 route 1;
+#X msg 731 -114 bang;
+#X msg 277 91 mark all;
+#X msg 287 112 mark none;
+#X text 340 92 mark all points;
+#X text 357 113 reset all markers;
+#X text 422 241 make a delaunay with all points;
+#X msg 342 241 delaunay on;
+#X msg 350 261 delaunay off;
+#X text 451 274 make a delaunay with point 1 and a tolerance of 50
+( all points which color is in that range will be included in the delaunay)
+;
+#X msg 333 217 ftolerance \$1;
+#X floatatom 425 217 5 0 0 0 - - -;
+#X text 465 217 frame tolerance for point identification ( default
+: 5 );
+#X text -232 -324 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+) and Yves Degoyon ( ydegoyon@gmail.com );
+#X text -231 -336 Corner points detection based on Shi and Tomasi;
+#X text -231 -348 pix_opencv_lk : Lukas-Kanade corner points tracking
+;
+#X obj 376 158 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X floatatom 639 -112 5 0 0 0 - - -;
+#X floatatom 692 -109 5 0 0 0 - - -;
+#X msg 350 283 pdelaunay 1 500;
+#X obj 341 -335 gemhead;
+#X obj 353 -308 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 410 -133 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 392 -168 5 0 10000 1 frame# - -;
+#X obj 353 -279 openpanel;
+#X msg 353 -259 open \$1;
+#X obj 341 -150 pix_film;
+#X msg 359 -216 auto \$1;
+#X obj 359 -234 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 454 -233 colorspace RGBA;
+#X msg 559 -233 colorspace RGB;
+#X msg 663 -233 colorspace Grey;
+#X obj 454 -261 loadbang;
+#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 178 -115 pd vswitch;
+#X obj 250 -119 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 161 -166 pix_video;
+#X obj 163 -320 gemhead;
+#X msg 200 -241 device 0;
+#X msg 209 -210 driver 1;
+#X msg 186 -295 dialog;
+#X msg 191 -265 device /dev/dv1394-0;
+#X obj 178 469 pix_texture;
+#X obj -231 -425 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 67 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 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 268 69 pd Gem.init;
+#X obj 162 241 gemwin;
+#X msg 161 188 create \, 1;
+#X msg 237 189 destroy;
+#X msg 188 161 dimen 320 240;
+#X obj 164 126 t b b b;
+#X msg 279 161 frame 25;
+#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 1 9 0;
+#X connect 10 2 11 0;
+#X connect 11 0 6 0;
+#X restore -224 -379 pd gemwin;
+#X msg -223 -401 destroy;
+#X text -223 -422 Create window and render;
+#X obj 178 488 rectangle 5.3 4;
+#X obj 178 -78 pix_resize 320 240;
+#X text 642 -68 selection of a point;
+#X text 436 196 max movement of a marker ( default 20 pixels );
+#X obj 178 -40 pix_rgba;
+#X connect 1 0 32 1;
+#X connect 3 0 4 0;
+#X connect 4 0 32 0;
+#X connect 6 0 32 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 32 0;
+#X connect 11 0 32 0;
+#X connect 13 0 14 0;
+#X connect 14 0 7 0;
+#X connect 15 0 32 0;
+#X connect 16 0 32 0;
+#X connect 18 0 32 0;
+#X connect 20 0 32 0;
+#X connect 21 0 20 0;
+#X connect 23 0 13 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 25 1 27 0;
+#X connect 30 0 25 0;
+#X connect 32 0 80 0;
+#X connect 32 1 30 0;
+#X connect 33 0 35 1;
+#X connect 33 1 34 1;
+#X connect 33 2 39 0;
+#X connect 34 0 37 1;
+#X connect 34 0 57 0;
+#X connect 35 0 37 0;
+#X connect 35 0 56 0;
+#X connect 36 0 35 0;
+#X connect 36 1 34 0;
+#X connect 37 0 15 0;
+#X connect 39 0 40 0;
+#X connect 40 0 36 0;
+#X connect 41 0 32 0;
+#X connect 42 0 32 0;
+#X connect 46 0 32 0;
+#X connect 47 0 32 0;
+#X connect 49 0 32 0;
+#X connect 50 0 49 0;
+#X connect 55 0 16 0;
+#X connect 58 0 32 0;
+#X connect 59 0 65 0;
+#X connect 60 0 63 0;
+#X connect 61 0 62 0;
+#X connect 62 0 65 1;
+#X connect 63 0 64 0;
+#X connect 64 0 65 0;
+#X connect 65 0 72 1;
+#X connect 65 2 61 0;
+#X connect 66 0 65 0;
+#X connect 67 0 66 0;
+#X connect 68 0 65 0;
+#X connect 68 0 74 0;
+#X connect 69 0 65 0;
+#X connect 70 0 65 0;
+#X connect 71 0 68 0;
+#X connect 71 0 67 0;
+#X connect 72 0 86 0;
+#X connect 73 0 72 2;
+#X connect 74 0 72 0;
+#X connect 75 0 74 0;
+#X connect 76 0 74 0;
+#X connect 77 0 74 0;
+#X connect 78 0 74 0;
+#X connect 79 0 74 0;
+#X connect 80 0 85 0;
+#X connect 82 0 83 0;
+#X connect 83 0 82 0;
+#X connect 86 0 89 0;
+#X connect 89 0 32 0;
diff --git a/help/pix_opencv_matchshape-help.pd b/help/pix_opencv_matchshape-help.pd
new file mode 100644
index 0000000..be53c23
--- /dev/null
+++ b/help/pix_opencv_matchshape-help.pd
@@ -0,0 +1,103 @@
+#N canvas 216 165 968 473 10;
+#X obj 477 6 cnv 15 480 460 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 20 75 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 21 326 cnv 15 450 140 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 22 331 Inlets:;
+#X obj 21 286 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 30 285 Arguments:;
+#X text 22 400 Outlets:;
+#X obj 491 41 cnv 15 460 310 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 501 326 pix_opencv_matchshape;
+#X obj 501 14 gemhead;
+#X obj 501 377 pix_texture;
+#X obj 501 398 rectangle 4 3;
+#X msg 570 103 contour 4 2 0 0 0 1 1 1 1 0;
+#X msg 556 239 method \$1;
+#X floatatom 556 217 5 0 0 0 - - -;
+#X msg 580 153 template 4 2 0 0 0 1 1 1 1 0;
+#X msg 590 173 template 4 2 2 0 4 1 1 1 1 0;
+#X msg 560 83 contour 6 2 0 0 0 1 1 1 1 0 -0.5 -0.5;
+#X floatatom 556 267 5 0 0 0 - - -;
+#X msg 556 287 threshold \$1;
+#X msg 550 64 contour 4 2 2 0 4 1 1 1 1 0;
+#X obj 624 357 route match_vec template_vec;
+#X obj 624 407 unpack;
+#X text 631 390 found corresponding contour;
+#X floatatom 624 435 5 0 0 0 - - -;
+#X floatatom 659 435 5 0 0 0 - - -;
+#X text 623 448 id;
+#X text 659 448 absolute difference from template;
+#X floatatom 706 378 5 0 0 0 - - -;
+#X text 740 375 number of loaded contour;
+#X text 593 213 method to compare shape (1 \, 2 or 3 \, please refer
+to OpenCV doc for details);
+#X text 37 193 This external uses cv::matchShapes function. Documentation
+is here : http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=matchshapes#matchshapes
+;
+#X text 588 266 threshold behind wich a shape is recognized;
+#X text 575 135 template message add a template to library;
+#X text 549 46 contour message compare the contour to each loaded contour
+;
+#X text 37 103 [pix_opencv_matchshape] compares input images or input
+contours to a library of images (or contours). It sends out the id
+of the closest found behind a threshold.;
+#X text 37 143 You can use pix_opencv_contour_convexhull2 to find all
+contours in the image and send them to pix_opencv_matchshape to recognize
+it.;
+#X text 20 79 Description: compares shapes;
+#X text 45 24 Synopsis: [pix_opencv_matchshape];
+#X text 67 40 Class: pix_opencv;
+#X text 76 296 none;
+#X text 40 353 Inlet 1: message: template <list of points>;
+#X text 40 363 Inlet 1: message: contour <list of points>;
+#X text 40 373 Inlet 1: message: method <float>;
+#X text 40 383 Inlet 1: message: threshold <float>;
+#X text 34 413 Outlet 1: input image;
+#X text 40 343 Inlet 1: image;
+#X obj 364 368 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 0 0 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 198 112 destroy;
+#X msg 132 112 create \, 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 3 1 5 0;
+#X connect 3 1 6 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 restore 369 407 pd gemwin;
+#X msg 369 388 create;
+#X text 365 367 Create window:;
+#X connect 8 0 10 0;
+#X connect 8 1 21 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 12 0 8 0;
+#X connect 13 0 8 0;
+#X connect 14 0 13 0;
+#X connect 15 0 8 0;
+#X connect 16 0 8 0;
+#X connect 17 0 8 0;
+#X connect 18 0 19 0;
+#X connect 19 0 8 0;
+#X connect 20 0 8 0;
+#X connect 21 0 22 0;
+#X connect 21 1 28 0;
+#X connect 22 0 24 0;
+#X connect 22 1 25 0;
+#X connect 48 0 49 0;
+#X connect 49 0 48 0;
diff --git a/help/pix_opencv_morphology-help.pd b/help/pix_opencv_morphology-help.pd
new file mode 100644
index 0000000..e6276d6
--- /dev/null
+++ b/help/pix_opencv_morphology-help.pd
@@ -0,0 +1,163 @@
+#N canvas 539 121 1064 885 10;
+#X obj 369 412 cnv 15 450 150 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 488 504 5 0 0 0 - - -;
+#X obj 514 418 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 472 462 shape 2;
+#X msg 462 442 shape 1;
+#X msg 482 481 shape 3;
+#X msg 456 418 mode \$1;
+#X text 519 443 use rectangle structuring element;
+#X text 537 478 use cross-shaped structuring element;
+#X text 531 460 use elliptic structuring element;
+#X text 537 418 switch open/close and erode/dilate modes;
+#X text 541 502 number of iterations -10/+10 (be carefull);
+#X obj 374 532 pix_opencv_morphology;
+#X text -98 98 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text -98 59 pdp_opencv_morphology : morphology filter ( erosion
+/ dilatation );
+#X text -98 84 used as a filter to focus on bright or dark zones;
+#X obj -96 -31 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 -91 13 pd gemwin;
+#X msg -91 -8 create;
+#X text -90 -26 Create window and render;
+#X obj 493 -11 gemhead;
+#X obj 374 642 pix_texture;
+#X obj 374 661 square 2;
+#X obj 222 638 pix_texture;
+#X obj 222 666 square 2;
+#X obj 374 316 separator;
+#X obj 505 16 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 562 191 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 544 156 5 0 10000 1 frame# - -;
+#X obj 505 45 openpanel;
+#X msg 505 65 open \$1;
+#X obj 493 174 pix_film;
+#X msg 511 108 auto \$1;
+#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 606 91 colorspace RGBA;
+#X msg 711 91 colorspace RGB;
+#X msg 815 91 colorspace Grey;
+#X obj 606 63 loadbang;
+#X obj 373 287 pix_separator;
+#X obj 222 319 separator;
+#X obj 222 290 pix_separator;
+#X obj 222 354 translateXYZ -2 0 0;
+#X obj 374 351 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 315 244 pd vswitch;
+#X obj 383 244 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 256 172 pix_video;
+#X obj 256 -16 gemhead;
+#X msg 295 97 device 0;
+#X msg 304 128 driver 1;
+#X msg 281 43 dialog;
+#X msg 286 73 device /dev/dv1394-0;
+#X obj 316 267 pix_rgba;
+#X connect 1 0 12 1;
+#X connect 2 0 6 0;
+#X connect 3 0 12 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 0;
+#X connect 6 0 12 0;
+#X connect 12 0 21 0;
+#X connect 17 0 18 0;
+#X connect 18 0 17 0;
+#X connect 20 0 31 0;
+#X connect 21 0 22 0;
+#X connect 23 0 24 0;
+#X connect 25 0 42 0;
+#X connect 26 0 29 0;
+#X connect 27 0 28 0;
+#X connect 28 0 31 1;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 31 0 43 1;
+#X connect 31 2 27 0;
+#X connect 32 0 31 0;
+#X connect 33 0 32 0;
+#X connect 34 0 31 0;
+#X connect 34 0 45 0;
+#X connect 35 0 31 0;
+#X connect 36 0 31 0;
+#X connect 37 0 34 0;
+#X connect 37 0 33 0;
+#X connect 38 0 25 0;
+#X connect 39 0 41 0;
+#X connect 40 0 39 0;
+#X connect 41 0 23 0;
+#X connect 42 0 12 0;
+#X connect 43 0 51 0;
+#X connect 44 0 43 2;
+#X connect 45 0 43 0;
+#X connect 46 0 45 0;
+#X connect 47 0 45 0;
+#X connect 48 0 45 0;
+#X connect 49 0 45 0;
+#X connect 50 0 45 0;
+#X connect 51 0 40 0;
+#X connect 51 0 38 0;
diff --git a/help/pix_opencv_motempl-help.pd b/help/pix_opencv_motempl-help.pd
new file mode 100644
index 0000000..4d5d485
--- /dev/null
+++ b/help/pix_opencv_motempl-help.pd
@@ -0,0 +1,231 @@
+#N canvas 431 23 1249 684 10;
+#X obj 535 783 pix_texture;
+#X obj 535 811 square 2;
+#X obj 504 497 cnv 15 550 251 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 669 841 5 0 0 0 - - -;
+#X floatatom 704 841 5 0 0 0 - - -;
+#X floatatom 741 841 5 0 0 0 - - -;
+#X floatatom 775 841 5 0 0 0 - - -;
+#X floatatom 698 890 5 0 0 0 - - -;
+#X floatatom 733 890 5 0 0 0 - - -;
+#X floatatom 770 890 5 0 0 0 - - -;
+#X floatatom 804 890 5 0 0 0 - - -;
+#X floatatom 742 946 5 0 0 0 - - -;
+#X floatatom 777 946 5 0 0 0 - - -;
+#X floatatom 814 946 5 0 0 0 - - -;
+#X floatatom 848 946 5 0 0 0 - - -;
+#X obj 666 812 unpack 0 0 0 0 0;
+#X obj 695 861 unpack 0 0 0 0 0;
+#X obj 739 917 unpack 0 0 0 0 0;
+#X floatatom 812 840 5 0 0 0 - - -;
+#X floatatom 842 890 5 0 0 0 - - -;
+#X floatatom 886 946 5 0 0 0 - - -;
+#X text 726 779 For each motion component component;
+#X text 788 812 (-1) means the whole image;
+#X text 863 838 Xcenter Ycenter Width Height Angle;
+#X text 884 889 Xcenter Ycenter Width Height Angle;
+#X text 931 945 Xcenter Ycenter Width Height Angle;
+#X floatatom 649 621 5 0 0 0 - - -;
+#X floatatom 682 595 5 0 0 0 - - -;
+#X text 689 623 Threshold value. (default 30);
+#X msg 577 594 mhi_duration \$1;
+#X floatatom 670 524 5 0 0 0 - - -;
+#X msg 555 523 max_time_delta \$1;
+#X floatatom 679 548 5 0 0 0 - - -;
+#X msg 562 545 min_time_delta \$1;
+#X floatatom 703 572 5 0 0 0 - - -;
+#X msg 572 569 frame_buffer_num \$1;
+#X floatatom 676 639 5 0 0 0 - - -;
+#X floatatom 687 658 5 0 0 0 - - -;
+#X text 727 660 Max size of the motion component (default 500);
+#X text 717 639 Min size of the motion component (default 50);
+#X text 740 570 Number of frames in the buffer. (default 4);
+#X text 709 522 Max time delta in seconds. (default 0.5);
+#X text 720 547 Min time delta in seconds. (default 0.05);
+#X obj 533 694 pix_opencv_motempl;
+#X msg 536 502 aperture \$1;
+#X text 712 503 aperture ( 3 \, 5 or 7 \, default 3 );
+#X msg 616 502 3;
+#X msg 649 502 5;
+#X msg 680 502 7;
+#X text 719 596 Maximal duration of motion track in seconds;
+#X text 59 153 pix_opencv_motempl : opencv motion detection based on
+movement history;
+#X obj 666 761 route -1 1 2 3 4;
+#X obj 61 49 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 66 93 pd gemwin;
+#X msg 66 72 destroy;
+#X text 67 54 Create window and render;
+#X obj 650 69 gemhead;
+#X obj 379 718 pix_texture;
+#X obj 379 746 square 2;
+#X obj 531 396 separator;
+#X obj 662 96 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 719 271 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 701 236 5 0 10000 1 frame# - -;
+#X obj 662 125 openpanel;
+#X msg 662 145 open \$1;
+#X obj 650 254 pix_film;
+#X msg 668 188 auto \$1;
+#X obj 668 170 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 763 171 colorspace RGBA;
+#X msg 868 171 colorspace RGB;
+#X msg 972 171 colorspace Grey;
+#X obj 763 143 loadbang;
+#X obj 530 367 pix_separator;
+#X obj 379 399 separator;
+#X obj 379 370 pix_separator;
+#X obj 379 434 translateXYZ -2 0 0;
+#X obj 531 431 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 472 324 pd vswitch;
+#X obj 540 324 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 413 252 pix_video;
+#X obj 413 64 gemhead;
+#X msg 452 177 device 0;
+#X msg 461 208 driver 1;
+#X msg 438 123 dialog;
+#X msg 443 153 device /dev/dv1394-0;
+#X obj 471 350 pix_rgba;
+#X obj 528 462 pix_resize 320 240;
+#X text 59 273 bugs and comments write Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text 59 193 pix_opencv_motempl works better with small connected
+components moving inside the image .... a good setup is for example
+a zenital camera with wider lens or shooting a stage from a viewpoint
+from far (5 o more meters of distance).;
+#X connect 0 0 1 0;
+#X connect 15 0 3 0;
+#X connect 15 1 4 0;
+#X connect 15 2 5 0;
+#X connect 15 3 6 0;
+#X connect 15 4 18 0;
+#X connect 16 0 7 0;
+#X connect 16 1 8 0;
+#X connect 16 2 9 0;
+#X connect 16 3 10 0;
+#X connect 16 4 19 0;
+#X connect 17 0 11 0;
+#X connect 17 1 12 0;
+#X connect 17 2 13 0;
+#X connect 17 3 14 0;
+#X connect 17 4 20 0;
+#X connect 26 0 43 1;
+#X connect 27 0 29 0;
+#X connect 29 0 43 0;
+#X connect 30 0 31 0;
+#X connect 31 0 43 0;
+#X connect 32 0 33 0;
+#X connect 33 0 43 0;
+#X connect 34 0 35 0;
+#X connect 35 0 43 0;
+#X connect 36 0 43 2;
+#X connect 37 0 43 3;
+#X connect 43 0 0 0;
+#X connect 43 1 51 0;
+#X connect 44 0 43 0;
+#X connect 46 0 44 0;
+#X connect 47 0 44 0;
+#X connect 48 0 44 0;
+#X connect 51 0 15 0;
+#X connect 51 1 16 0;
+#X connect 51 2 17 0;
+#X connect 53 0 54 0;
+#X connect 54 0 53 0;
+#X connect 56 0 65 0;
+#X connect 57 0 58 0;
+#X connect 59 0 76 0;
+#X connect 60 0 63 0;
+#X connect 61 0 62 0;
+#X connect 62 0 65 1;
+#X connect 63 0 64 0;
+#X connect 64 0 65 0;
+#X connect 65 0 77 1;
+#X connect 65 2 61 0;
+#X connect 66 0 65 0;
+#X connect 67 0 66 0;
+#X connect 68 0 65 0;
+#X connect 68 0 79 0;
+#X connect 69 0 65 0;
+#X connect 70 0 65 0;
+#X connect 71 0 68 0;
+#X connect 71 0 67 0;
+#X connect 72 0 59 0;
+#X connect 73 0 75 0;
+#X connect 74 0 73 0;
+#X connect 75 0 57 0;
+#X connect 76 0 86 0;
+#X connect 77 0 85 0;
+#X connect 78 0 77 2;
+#X connect 79 0 77 0;
+#X connect 80 0 79 0;
+#X connect 81 0 79 0;
+#X connect 82 0 79 0;
+#X connect 83 0 79 0;
+#X connect 84 0 79 0;
+#X connect 85 0 74 0;
+#X connect 85 0 72 0;
+#X connect 86 0 43 0;
diff --git a/help/pix_opencv_of_bm-help.pd b/help/pix_opencv_of_bm-help.pd
new file mode 100644
index 0000000..99db7d4
--- /dev/null
+++ b/help/pix_opencv_of_bm-help.pd
@@ -0,0 +1,214 @@
+#N canvas 64 85 1339 660 10;
+#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 189 149 454 304 gemwin 0;
+#X obj 130 218 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 182 68 set create;
+#X msg 129 165 create \, 1;
+#X msg 205 166 destroy;
+#N canvas 87 154 363 340 Gem.init 0;
+#X obj 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 289 80 pd Gem.init;
+#X obj 128 109 t b b b;
+#X msg 247 137 frame 25;
+#X msg 156 138 dimen 640 480;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 9 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 9 0 6 0;
+#X connect 9 1 11 0;
+#X connect 9 2 10 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X restore 984 101 pd gemwin;
+#X msg 984 80 create;
+#X text 987 62 Create window and render;
+#X text 979 189 with a great help from Mateu Batle & Alberto de Rodrigo
+from the iBit foundation.;
+#X text 978 153 the main purpose of this object is to calculate the
+average direction and the intensity of the movement in a video stream.
+;
+#X text 979 213 comments to ydegoyon@gmail.com;
+#X text 979 137 pix_opencv_of_bm : Block Matching optical flow algorithm.
+;
+#X obj 426 308 cnv 15 600 350 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 455 540 pix_opencv_of_bm;
+#X obj 560 572 unpack f f;
+#X floatatom 646 572 5 0 0 0 - - -, f 5;
+#X floatatom 648 592 5 0 0 0 - - -, f 5;
+#X text 688 571 largest amplitude of movement;
+#X text 688 592 angle of the block with the maximum movement;
+#X text 686 604 ( in degrees [-180 \, 180]);
+#X floatatom 507 621 5 0 0 0 - - -, f 5;
+#X text 549 642 marked with a white arrow on the stream;
+#X text 549 618 average angle of the blocks movement;
+#X text 548 630 ( in degrees [-180 \, 180]);
+#X obj 600 463 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 515 461 nightmode \$1;
+#X floatatom 573 332 5 0 0 0 - - -, f 5;
+#X msg 463 331 blocksize \$1 \$1;
+#X floatatom 585 355 5 0 0 0 - - -, f 5;
+#X floatatom 599 381 5 0 0 0 - - -, f 5;
+#X msg 475 354 shiftsize \$1 \$1;
+#X msg 489 380 maxrange \$1 \$1;
+#X floatatom 589 408 5 0 0 0 - - -, f 5;
+#X msg 502 406 threshold \$1;
+#X obj 621 492 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 521 491 useprevious \$1;
+#X text 614 332 set blocksize (width height) ( default 20x20 );
+#X text 625 354 set shiftsize (width height) ( default 20x20 );
+#X text 639 381 set maxrange (width height) ( default 20x10 );
+#X text 643 490 use previous results ( default : 0 \, surprising results
+when on );
+#X msg 505 435 minblocks \$1;
+#X floatatom 592 436 5 0 0 0 - - -, f 5;
+#X text 619 464 set nightmode;
+#X text 636 430 minimum nuber of blocks to detect the movement;
+#X text 631 405 threshold value for the detection of movement ( default
+10 );
+#X text 633 443 ( default 10 );
+#X obj 507 -62 gemhead;
+#X obj 454 228 separator;
+#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 600 78 5 0 10000 1 frame# - -, f 5;
+#X obj 561 -33 openpanel;
+#X msg 561 -13 open \$1;
+#X obj 549 96 pix_film;
+#X msg 567 30 auto \$1;
+#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 662 13 colorspace RGBA;
+#X msg 767 13 colorspace RGB;
+#X msg 871 13 colorspace Grey;
+#X obj 662 -15 loadbang;
+#X obj 296 224 separator;
+#X obj 296 250 translateXYZ -2 0 0;
+#X obj 454 253 translateXYZ 2 0 0;
+#N canvas 0 50 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 385 125 pd vswitch;
+#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 312 94 pix_video;
+#X obj 315 -64 gemhead;
+#X msg 351 19 device 0;
+#X msg 360 50 driver 1;
+#X msg 337 -35 dialog;
+#X msg 342 -5 device /dev/dv1394-0;
+#X obj 294 659 pix_texture;
+#X obj 294 687 square 2;
+#X obj 455 664 pix_texture;
+#X text 504 146 this object can work on small frames unless you have
+a very powerful machine;
+#X obj 456 688 square 2;
+#X obj 295 201 pix_separator;
+#X obj 454 205 pix_separator;
+#X obj 384 154 pix_resize 320 240;
+#X obj 386 180 pix_rgba;
+#X connect 1 0 2 0;
+#X connect 2 0 1 0;
+#X connect 9 0 69 0;
+#X connect 9 1 16 0;
+#X connect 9 2 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 12 0;
+#X connect 20 0 21 0;
+#X connect 21 0 9 0;
+#X connect 22 0 23 0;
+#X connect 23 0 9 0;
+#X connect 24 0 26 0;
+#X connect 25 0 27 0;
+#X connect 26 0 9 0;
+#X connect 27 0 9 0;
+#X connect 28 0 29 0;
+#X connect 29 0 9 0;
+#X connect 30 0 31 0;
+#X connect 31 0 9 0;
+#X connect 36 0 9 0;
+#X connect 37 0 36 0;
+#X connect 42 0 49 0;
+#X connect 43 0 58 0;
+#X connect 44 0 47 0;
+#X connect 45 0 46 0;
+#X connect 46 0 49 1;
+#X connect 47 0 48 0;
+#X connect 48 0 49 0;
+#X connect 49 0 59 1;
+#X connect 49 2 45 0;
+#X connect 50 0 49 0;
+#X connect 51 0 50 0;
+#X connect 52 0 49 0;
+#X connect 52 0 61 0;
+#X connect 53 0 49 0;
+#X connect 54 0 49 0;
+#X connect 55 0 52 0;
+#X connect 55 0 51 0;
+#X connect 56 0 57 0;
+#X connect 57 0 67 0;
+#X connect 58 0 9 0;
+#X connect 59 0 74 0;
+#X connect 60 0 59 2;
+#X connect 61 0 59 0;
+#X connect 62 0 61 0;
+#X connect 63 0 61 0;
+#X connect 64 0 61 0;
+#X connect 65 0 61 0;
+#X connect 66 0 61 0;
+#X connect 67 0 68 0;
+#X connect 69 0 71 0;
+#X connect 72 0 56 0;
+#X connect 73 0 43 0;
+#X connect 74 0 75 0;
+#X connect 75 0 72 0;
+#X connect 75 0 73 0;
diff --git a/help/pix_opencv_of_hs-help.pd b/help/pix_opencv_of_hs-help.pd
new file mode 100644
index 0000000..c0baf2c
--- /dev/null
+++ b/help/pix_opencv_of_hs-help.pd
@@ -0,0 +1,207 @@
+#N canvas 1644 152 1339 660 10;
+#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 189 149 454 304 gemwin 0;
+#X obj 130 218 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 182 68 set create;
+#X msg 129 165 create \, 1;
+#X msg 205 166 destroy;
+#N canvas 87 154 363 340 Gem.init 0;
+#X obj 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 289 80 pd Gem.init;
+#X obj 128 109 t b b b;
+#X msg 247 137 frame 25;
+#X msg 156 138 dimen 640 480;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 9 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 9 0 6 0;
+#X connect 9 1 11 0;
+#X connect 9 2 10 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X restore 983 98 pd gemwin;
+#X msg 983 77 create;
+#X text 986 59 Create window and render;
+#X obj 427 308 cnv 15 600 300 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 559 504 unpack f f;
+#X floatatom 645 504 5 0 0 0 - - -;
+#X floatatom 647 524 5 0 0 0 - - -;
+#X text 687 503 largest amplitude of movement;
+#X text 687 524 angle of the block with the maximum movement;
+#X text 685 536 ( in degrees [-180 \, 180]);
+#X floatatom 506 553 5 0 0 0 - - -;
+#X text 548 574 marked with a white arrow on the stream;
+#X text 548 550 average angle of the blocks movement;
+#X text 547 562 ( in degrees [-180 \, 180]);
+#X obj 507 -62 gemhead;
+#X obj 454 228 separator;
+#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 600 78 5 0 10000 1 frame# - -;
+#X obj 561 -33 openpanel;
+#X msg 561 -13 open \$1;
+#X obj 549 96 pix_film;
+#X msg 567 30 auto \$1;
+#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 662 13 colorspace RGBA;
+#X msg 767 13 colorspace RGB;
+#X msg 871 13 colorspace Grey;
+#X obj 662 -15 loadbang;
+#X obj 296 224 separator;
+#X obj 296 250 translateXYZ -2 0 0;
+#X obj 454 253 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 385 125 pd vswitch;
+#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 312 94 pix_video;
+#X obj 315 -64 gemhead;
+#X msg 351 19 device 0;
+#X msg 360 50 driver 1;
+#X msg 337 -35 dialog;
+#X msg 342 -5 device /dev/dv1394-0;
+#X obj 293 613 pix_texture;
+#X obj 293 641 square 2;
+#X obj 454 618 pix_texture;
+#X text 504 146 this object can work on small frames unless you have
+a very powerful machine;
+#X obj 455 642 square 2;
+#X obj 295 201 pix_separator;
+#X obj 454 205 pix_separator;
+#X obj 454 472 pix_opencv_of_hs;
+#X obj 596 402 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 511 400 nightmode \$1;
+#X floatatom 557 323 5 0 0 0 - - -;
+#X floatatom 585 347 5 0 0 0 - - -;
+#X msg 498 345 threshold \$1;
+#X obj 620 433 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 520 432 useprevious \$1;
+#X text 642 431 use previous results ( default : 0 \, surprising results
+when on );
+#X msg 501 374 minblocks \$1;
+#X floatatom 588 375 5 0 0 0 - - -;
+#X text 615 403 set nightmode;
+#X text 632 369 minimum nuber of blocks to detect the movement;
+#X msg 487 320 lambda \$1;
+#X text 600 320 set Lagragian multiplier ( default 1 );
+#X text 629 382 ( default 10 );
+#X text 627 344 threshold value for the detection of movement ( default
+100 );
+#X text 971 253 with a great help from Mateu Batle & Alberto de Rodrigo
+from the iBit foundation.;
+#X text 970 217 the main purpose of this object is to calculate the
+average direction and the intensity of the movement in a video stream.
+;
+#X text 971 277 comments to ydegoyon@gmail.com;
+#X text 972 132 pix_opencv_of_hs : Haron and Schunck optical flow algorithm.
+;
+#X obj 385 160 pix_resize 320 240;
+#X obj 385 182 pix_rgba;
+#X text 971 153 IMPORTANT: this object is quite experimental. For OpticalFlow
+analisys we recommend [pix_opencv_of_bm];
+#X obj 975 184 pix_opencv_of_bm;
+#X connect 1 0 2 0;
+#X connect 2 0 1 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 15 0 22 0;
+#X connect 16 0 31 0;
+#X connect 17 0 20 0;
+#X connect 18 0 19 0;
+#X connect 19 0 22 1;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 32 1;
+#X connect 22 2 18 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 25 0 22 0;
+#X connect 25 0 34 0;
+#X connect 26 0 22 0;
+#X connect 27 0 22 0;
+#X connect 28 0 25 0;
+#X connect 28 0 24 0;
+#X connect 29 0 30 0;
+#X connect 30 0 40 0;
+#X connect 31 0 47 0;
+#X connect 32 0 68 0;
+#X connect 33 0 32 2;
+#X connect 34 0 32 0;
+#X connect 35 0 34 0;
+#X connect 36 0 34 0;
+#X connect 37 0 34 0;
+#X connect 38 0 34 0;
+#X connect 39 0 34 0;
+#X connect 40 0 41 0;
+#X connect 42 0 44 0;
+#X connect 45 0 29 0;
+#X connect 46 0 16 0;
+#X connect 47 0 42 0;
+#X connect 47 1 11 0;
+#X connect 47 2 5 0;
+#X connect 48 0 49 0;
+#X connect 49 0 47 0;
+#X connect 50 0 60 0;
+#X connect 51 0 52 0;
+#X connect 52 0 47 0;
+#X connect 53 0 54 0;
+#X connect 54 0 47 0;
+#X connect 56 0 47 0;
+#X connect 57 0 56 0;
+#X connect 60 0 47 0;
+#X connect 68 0 69 0;
+#X connect 69 0 45 0;
+#X connect 69 0 46 0;
diff --git a/help/pix_opencv_of_lk-help.pd b/help/pix_opencv_of_lk-help.pd
new file mode 100644
index 0000000..bdbf2c9
--- /dev/null
+++ b/help/pix_opencv_of_lk-help.pd
@@ -0,0 +1,205 @@
+#N canvas 1556 165 1339 660 10;
+#X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 189 149 454 304 gemwin 0;
+#X obj 130 218 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 182 68 set create;
+#X msg 129 165 create \, 1;
+#X msg 205 166 destroy;
+#N canvas 87 154 363 340 Gem.init 0;
+#X obj 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 289 80 pd Gem.init;
+#X obj 128 109 t b b b;
+#X msg 247 137 frame 25;
+#X msg 156 138 dimen 640 480;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 9 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 9 0 6 0;
+#X connect 9 1 11 0;
+#X connect 9 2 10 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X restore 984 101 pd gemwin;
+#X msg 984 80 create;
+#X text 987 62 Create window and render;
+#X obj 426 308 cnv 15 600 300 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 559 476 unpack f f;
+#X floatatom 645 476 5 0 0 0 - - -;
+#X floatatom 647 496 5 0 0 0 - - -;
+#X text 687 475 largest amplitude of movement;
+#X text 687 496 angle of the block with the maximum movement;
+#X text 685 508 ( in degrees [-180 \, 180]);
+#X floatatom 506 525 5 0 0 0 - - -;
+#X text 548 546 marked with a white arrow on the stream;
+#X text 548 522 average angle of the blocks movement;
+#X text 547 534 ( in degrees [-180 \, 180]);
+#X obj 507 -62 gemhead;
+#X obj 454 228 separator;
+#X obj 561 -62 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 618 113 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 600 78 5 0 10000 1 frame# - -;
+#X obj 561 -33 openpanel;
+#X msg 561 -13 open \$1;
+#X obj 549 96 pix_film;
+#X msg 567 30 auto \$1;
+#X obj 567 12 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 662 13 colorspace RGBA;
+#X msg 767 13 colorspace RGB;
+#X msg 871 13 colorspace Grey;
+#X obj 662 -15 loadbang;
+#X obj 296 224 separator;
+#X obj 296 250 translateXYZ -2 0 0;
+#X obj 454 253 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 385 125 pd vswitch;
+#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 312 94 pix_video;
+#X obj 315 -64 gemhead;
+#X msg 351 19 device 0;
+#X msg 360 50 driver 1;
+#X msg 337 -35 dialog;
+#X msg 342 -5 device /dev/dv1394-0;
+#X obj 293 612 pix_texture;
+#X obj 293 640 square 2;
+#X obj 454 617 pix_texture;
+#X text 504 146 this object can work on small frames unless you have
+a very powerful machine;
+#X obj 455 641 square 2;
+#X obj 295 201 pix_separator;
+#X obj 454 205 pix_separator;
+#X text 974 244 with a great help from Mateu Batle & Alberto de Rodrigo
+from the iBit foundation.;
+#X text 973 208 the main purpose of this object is to calculate the
+average direction and the intensity of the movement in a video stream.
+;
+#X text 974 268 comments to ydegoyon@gmail.com;
+#X text 976 129 pix_opencv_of_lk : Lucas Kanade optical flow algorithm.
+;
+#X obj 599 419 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 514 417 nightmode \$1;
+#X floatatom 585 311 5 0 0 0 - - -;
+#X floatatom 588 364 5 0 0 0 - - -;
+#X msg 501 362 threshold \$1;
+#X msg 504 391 minblocks \$1;
+#X floatatom 591 392 5 0 0 0 - - -;
+#X text 621 418 set nightmode;
+#X text 629 386 minimum nuber of blocks to detect the movement;
+#X text 626 399 ( default 10 );
+#X msg 491 309 winsize \$1 \$2;
+#X obj 454 444 pix_opencv_of_lk;
+#X text 628 312 set window size ( width height ) [ default : 9x9 ]
+;
+#X text 630 328 window width and height must be oneof (1 \, 3 \, 5
+\, 7 \, 9 \, 11 \, 13 \, 15);
+#X text 627 363 threshold value for the detection of movement (default
+100);
+#X obj 383 164 pix_resize 320 240;
+#X obj 389 187 pix_rgba;
+#X text 974 147 IMPORTANT: this object is quite experimental. For OpticalFlow
+analisys we recommend [pix_opencv_of_bm];
+#X obj 978 178 pix_opencv_of_bm;
+#X connect 1 0 2 0;
+#X connect 2 0 1 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 15 0 22 0;
+#X connect 16 0 31 0;
+#X connect 17 0 20 0;
+#X connect 18 0 19 0;
+#X connect 19 0 22 1;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 32 1;
+#X connect 22 2 18 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 25 0 22 0;
+#X connect 25 0 34 0;
+#X connect 26 0 22 0;
+#X connect 26 0 34 0;
+#X connect 27 0 22 0;
+#X connect 27 0 34 0;
+#X connect 28 0 25 0;
+#X connect 28 0 24 0;
+#X connect 29 0 30 0;
+#X connect 30 0 40 0;
+#X connect 31 0 62 0;
+#X connect 32 0 66 0;
+#X connect 33 0 32 2;
+#X connect 34 0 32 0;
+#X connect 35 0 34 0;
+#X connect 36 0 34 0;
+#X connect 37 0 34 0;
+#X connect 38 0 34 0;
+#X connect 39 0 34 0;
+#X connect 40 0 41 0;
+#X connect 42 0 44 0;
+#X connect 45 0 29 0;
+#X connect 46 0 16 0;
+#X connect 51 0 52 0;
+#X connect 52 0 62 0;
+#X connect 53 0 61 0;
+#X connect 54 0 55 0;
+#X connect 55 0 62 0;
+#X connect 56 0 62 0;
+#X connect 57 0 56 0;
+#X connect 61 0 62 0;
+#X connect 62 0 42 0;
+#X connect 62 1 11 0;
+#X connect 62 2 5 0;
+#X connect 66 0 67 0;
+#X connect 67 0 45 0;
+#X connect 67 0 46 0;
diff --git a/help/pix_opencv_opticalflow-help.pd b/help/pix_opencv_opticalflow-help.pd
new file mode 100644
index 0000000..62e353a
--- /dev/null
+++ b/help/pix_opencv_opticalflow-help.pd
@@ -0,0 +1,91 @@
+#N canvas 922 201 794 766 10;
+#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 13 315 Inlets:;
+#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 20 266 Arguments:;
+#X text 12 356 Outlets:;
+#X text 478 20 Example:;
+#X text 58 21 Class: pix_opencv;
+#X text 66 276 none;
+#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 1 122 450 300 gemwin 0;
+#X obj 132 156 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 198 112 destroy;
+#X msg 132 132 reset \, dimen 640 480 \, create \, 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 3 1 5 0;
+#X connect 3 1 6 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 restore 358 354 pd gemwin;
+#X msg 358 335 destroy;
+#X text 354 314 Create window:;
+#X text 354 314 Create window:;
+#X text 25 367 Outlet 1: gemlist output;
+#X text 16 719 bug \, feedback \, comment... on the pd-list;
+#X obj 476 233 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 487 57 gemhead 1;
+#X floatatom 542 237 5 0 0 0 - - -, f 5;
+#X obj 625 121 loadbang;
+#X text 487 387 color legend :;
+#X text 520 404 yellow = bounding box;
+#X text 526 414 green = contour;
+#X text 532 425 blue = convexhull;
+#X text 532 437 pink = convexhull edge with defects;
+#X text 538 449 red = farthest point from convexhull;
+#X obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 542 254 gain \$1;
+#X text 37 5 Synopsis: [pix_opencv_opticalflow];
+#X text 11 60 Description: compute optical flow;
+#X text 30 329 Inlet 1: RGBA image;
+#X text 30 339 Inlet 1: message: gain [float];
+#X text 25 377 Outlet 2: info output;
+#X text 26 699 by antoine villeret - 2013;
+#X obj 487 171 pix_rgba;
+#X obj 487 280 pix_opencv_opticalflow;
+#X obj 487 347 pix_texture;
+#X obj 487 367 rectangle 5.333 4;
+#X msg 545 319 quality 0;
+#X obj 545 300 loadbang;
+#X obj 487 193 pix_resize 320 240;
+#X msg 617 253 normalize \$1;
+#X obj 617 233 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 625 141 1;
+#X text 37 74 [pix_opencv_opticalflow] computes optical flow;
+#X obj 487 135 pix_video;
+#X connect 11 0 12 0;
+#X connect 12 0 11 0;
+#X connect 18 0 46 0;
+#X connect 19 0 28 0;
+#X connect 20 0 44 0;
+#X connect 27 0 18 0;
+#X connect 28 0 36 0;
+#X connect 35 0 41 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 39 0 37 0;
+#X connect 40 0 39 0;
+#X connect 41 0 36 0;
+#X connect 42 0 36 0;
+#X connect 43 0 42 0;
+#X connect 44 0 19 0;
+#X connect 46 0 35 0;
diff --git a/help/pix_opencv_pgh_compare-help.pd b/help/pix_opencv_pgh_compare-help.pd
new file mode 100644
index 0000000..22e21d0
--- /dev/null
+++ b/help/pix_opencv_pgh_compare-help.pd
@@ -0,0 +1,225 @@
+#N canvas 343 247 1154 642 10;
+#X obj 897 4 gemhead;
+#X obj 372 500 pix_texture;
+#X obj 372 528 square 2;
+#X obj 18 26 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 67 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 160 260 gemwin;
+#X msg 159 207 create \, 1;
+#X msg 235 208 destroy;
+#X msg 281 180 frame 25;
+#X obj 162 170 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 24 69 pd gemwin;
+#X msg 24 48 create;
+#X text 25 30 Create window and render;
+#X obj 363 232 cnv 15 700 250 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 553 -63 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 610 112 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 592 77 5 0 10000 1 frame# - -;
+#X obj 553 -34 openpanel;
+#X msg 553 -14 open \$1;
+#X obj 552 94 pix_film;
+#X msg 559 29 auto \$1;
+#X obj 559 11 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 506 439 30 0 0 0 - - -;
+#X text 511 422 distance;
+#X obj 730 457 route 1;
+#X obj 782 457 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 783 437 hsl 128 15 0 0.2 0 0 cdist empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 805 455 criteria value;
+#X floatatom 701 439 10 0 0 0 - - -;
+#X msg 478 319 criteria \$1;
+#X obj 562 320 r cdist;
+#X text 615 314 criteria value under which the contour is recongnized
+;
+#X msg 463 255 minsize \$1;
+#X floatatom 537 256 5 0 0 0 - - -;
+#X text 578 256 minimum size of selected contours ( default : 10x10
+);
+#X msg 480 290 clear;
+#X text 588 290 recalculates the pattern contour;
+#X obj 529 291 r reset;
+#X text 600 -61 playing a video file;
+#X text 618 -48 ( try estrella.mov );
+#X msg 831 -72 bang;
+#X text 877 -79 loading a pattern image;
+#X text 876 -66 ( try estrella.jpg );
+#X text 830 -97 Compare to a pattern;
+#X obj 831 4 pix_image;
+#X obj 833 -45 openpanel;
+#X obj 831 154 separator;
+#X msg 832 -18 open \$1;
+#X floatatom 984 121 5 0 0 0 - - -;
+#X obj 1052 94 loadbang;
+#X msg 1021 94 160;
+#X obj 953 93 r tresh;
+#X floatatom 507 187 5 0 0 0 - - -;
+#X obj 575 185 loadbang;
+#X msg 547 185 160;
+#X obj 508 205 s tresh;
+#X obj 962 153 pix_texture;
+#X obj 830 120 pix_opencv_threshold;
+#X obj 374 206 pix_opencv_threshold;
+#X obj 962 181 square 2;
+#X obj 830 66 translateXYZ -2 0 0;
+#X obj 831 34 pix_resize 320 240;
+#X obj 831 181 translateXYZ 4 0 0;
+#X obj 373 158 pix_resize 320 240;
+#X obj 374 356 pix_opencv_pgh_compare;
+#X text 17 -80 pix_opencv_pgh_compare :: compare contours calculating
+their PGH histograms.;
+#X text 17 -53 Written by Yves Degoyon ( ydegoyon@gmail.com ) using
+example code from OpenCV book;
+#X obj 683 458 < 0.05;
+#X text 612 326 ( adjust to your situation : default : 0.05 );
+#X obj 616 0 loadbang;
+#X msg 616 25 colorspace RGBA;
+#X msg 720 25 colorspace RGB;
+#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 374 136 pd vswitch;
+#X obj 443 135 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 373 83 pix_video;
+#X obj 373 -54 gemhead;
+#X msg 411 25 device 0;
+#X msg 420 56 driver 1;
+#X msg 397 -29 dialog;
+#X msg 402 1 device /dev/dv1394-0;
+#X obj 544 379 unpack f f f f f;
+#X text 658 379 position of detected contours;
+#X floatatom 567 401 5 0 0 0 - - -;
+#X floatatom 605 402 5 0 0 0 - - -;
+#X floatatom 645 401 5 0 0 0 - - -;
+#X floatatom 688 402 5 0 0 0 - - -;
+#X text 574 414 X;
+#X text 613 413 Y;
+#X text 645 413 width;
+#X text 686 414 height;
+#X obj 374 182 pix_rgba;
+#X obj 831 90 pix_rgba;
+#X obj 372 109 translateXYZ 2 0 0;
+#X connect 0 0 38 0;
+#X connect 1 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 4 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 1;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 66 1;
+#X connect 13 2 9 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 61 0;
+#X connect 18 0 19 0;
+#X connect 20 0 22 0;
+#X connect 20 0 61 1;
+#X connect 23 0 58 0;
+#X connect 24 0 23 0;
+#X connect 26 0 58 0;
+#X connect 27 0 26 0;
+#X connect 29 0 58 0;
+#X connect 31 0 29 0;
+#X connect 34 0 39 0;
+#X connect 38 0 55 0;
+#X connect 39 0 41 0;
+#X connect 40 0 56 0;
+#X connect 41 0 38 0;
+#X connect 42 0 51 2;
+#X connect 43 0 44 0;
+#X connect 44 0 42 0;
+#X connect 45 0 42 0;
+#X connect 46 0 49 0;
+#X connect 46 0 52 2;
+#X connect 47 0 48 0;
+#X connect 48 0 46 0;
+#X connect 50 0 53 0;
+#X connect 51 0 40 0;
+#X connect 51 0 50 0;
+#X connect 51 0 58 1;
+#X connect 52 0 58 0;
+#X connect 54 0 85 0;
+#X connect 55 0 54 0;
+#X connect 56 0 13 0;
+#X connect 57 0 84 0;
+#X connect 58 0 1 0;
+#X connect 58 1 16 0;
+#X connect 58 2 74 0;
+#X connect 61 0 18 0;
+#X connect 63 0 64 0;
+#X connect 64 0 13 0;
+#X connect 65 0 13 0;
+#X connect 66 0 57 0;
+#X connect 67 0 66 2;
+#X connect 68 0 86 0;
+#X connect 69 0 68 0;
+#X connect 70 0 68 0;
+#X connect 71 0 68 0;
+#X connect 72 0 68 0;
+#X connect 73 0 68 0;
+#X connect 74 1 76 0;
+#X connect 74 2 77 0;
+#X connect 74 3 78 0;
+#X connect 74 4 79 0;
+#X connect 84 0 52 0;
+#X connect 85 0 51 0;
+#X connect 86 0 66 0;
diff --git a/help/pix_opencv_surf-help.pd b/help/pix_opencv_surf-help.pd
new file mode 100644
index 0000000..8bf97c4
--- /dev/null
+++ b/help/pix_opencv_surf-help.pd
@@ -0,0 +1,220 @@
+#N canvas 126 104 1266 876 10;
+#X obj 361 637 pix_texture;
+#X obj 32 -122 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 194 173 454 304 gemwin 0;
+#X obj 130 218 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 182 68 set create;
+#X msg 129 165 create \, 1;
+#X msg 205 166 destroy;
+#N canvas 87 154 363 340 Gem.init 0;
+#X obj 112 15 loadbang;
+#X msg 62 93 reset;
+#X obj 49 135 outlet;
+#X msg 107 89 dimen 320 240;
+#X obj 107 51 t b b b;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 2 1 0;
+#X restore 289 80 pd Gem.init;
+#X obj 128 109 t b b b;
+#X msg 156 138 dimen 320 240;
+#X msg 252 139 frame 25;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 9 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 9 0 6 0;
+#X connect 9 1 10 0;
+#X connect 9 2 11 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X restore 39 -76 pd gemwin;
+#X msg 39 -97 create;
+#X text 40 -118 Create window and render;
+#X obj 340 180 cnv 15 600 450 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 485 575 unpack f f;
+#X floatatom 486 600 5 0 0 0 - - -;
+#X floatatom 544 601 5 0 0 0 - - -;
+#X text 487 616 X;
+#X text 542 617 Y;
+#X obj 484 549 route 1 2 3 4 5 6 7 8 9 10;
+#X obj 952 123 gemmouse;
+#X obj 1008 230 f;
+#X obj 978 229 f;
+#X obj 1022 201 t b b;
+#X obj 975 274 pack f f;
+#X obj 998 151 route 1;
+#X msg 1019 176 bang;
+#X floatatom 969 251 5 0 0 0 - - -;
+#X floatatom 1022 254 5 0 0 0 - - -;
+#X obj 360 524 pix_opencv_surf;
+#X obj 467 252 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 382 253 nightmode \$1;
+#X text 486 256 set nightmode;
+#X msg 429 316 mark \$1 \$2;
+#X msg 435 339 delete \$1;
+#X text 628 340 delete a marker;
+#X msg 446 362 clear;
+#X text 494 363 delete all markers;
+#X msg 461 392 maxmove \$1;
+#X floatatom 537 394 5 0 0 0 - - -;
+#X text 502 316 mark %x %y : mark a point to track ( max points : 10
+);
+#X text 546 441 make a delaunay with all points;
+#X msg 465 439 delaunay on;
+#X msg 467 460 delaunay off;
+#X text 577 471 make a delaunay with point 1 and a tolerance of 50
+( all points which color is in that range will be included in the delaunay)
+;
+#X obj 500 339 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X msg 473 483 pdelaunay 1 50;
+#X msg 363 224 hessian \$1;
+#X floatatom 438 225 5 0 0 0 - - -;
+#X floatatom 546 416 5 0 0 0 - - -;
+#X msg 464 415 ftolerance \$1;
+#X text 589 416 frame tolerance for point recognition ( default : 5
+);
+#X msg 406 272 mark all;
+#X text 476 273 mark all points;
+#X msg 416 293 mark none;
+#X text 486 294 suppress all marks;
+#X text 635 -81 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+) and Yves Degoyon ( ydegoyon@gmail.com );
+#X text 633 -104 pix_opencv_surf : SURF ( Speed Up Robust Features
+) points detection and tracking;
+#X text 478 224 hessian threshold ( default 1000 );
+#X obj 360 669 rectangle 5.3 4;
+#X obj 515 -102 gemhead;
+#X obj 527 -75 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 584 100 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 566 65 5 0 10000 1 frame# - -;
+#X obj 527 -46 openpanel;
+#X msg 527 -26 open \$1;
+#X obj 515 83 pix_film;
+#X msg 533 17 auto \$1;
+#X obj 533 -1 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X msg 628 0 colorspace RGBA;
+#X msg 733 0 colorspace RGB;
+#X msg 630 24 colorspace Grey;
+#X obj 628 -28 loadbang;
+#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 357 114 pd vswitch;
+#X obj 429 110 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 340 63 pix_video;
+#X obj 342 -91 gemhead;
+#X msg 379 -12 device 0;
+#X msg 388 19 driver 1;
+#X msg 365 -66 dialog;
+#X msg 370 -36 device /dev/dv1394-0;
+#X obj 356 140 pix_resize 320 240;
+#X text 575 392 max movement of a marker ( default 20 pixels );
+#X obj 357 161 pix_rgba;
+#X connect 0 0 51 0;
+#X connect 2 0 3 0;
+#X connect 3 0 2 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 11 0 6 0;
+#X connect 12 0 14 1;
+#X connect 12 1 13 1;
+#X connect 12 2 17 0;
+#X connect 13 0 16 1;
+#X connect 13 0 20 0;
+#X connect 14 0 16 0;
+#X connect 14 0 19 0;
+#X connect 15 0 14 0;
+#X connect 15 1 13 0;
+#X connect 16 0 25 0;
+#X connect 17 0 18 0;
+#X connect 18 0 15 0;
+#X connect 21 0 0 0;
+#X connect 21 1 11 0;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X connect 25 0 21 0;
+#X connect 26 0 21 0;
+#X connect 28 0 21 0;
+#X connect 30 0 21 0;
+#X connect 31 0 30 0;
+#X connect 34 0 21 0;
+#X connect 35 0 21 0;
+#X connect 37 0 26 0;
+#X connect 38 0 21 0;
+#X connect 39 0 21 0;
+#X connect 40 0 39 0;
+#X connect 41 0 42 0;
+#X connect 42 0 21 0;
+#X connect 44 0 21 0;
+#X connect 46 0 21 0;
+#X connect 52 0 58 0;
+#X connect 53 0 56 0;
+#X connect 54 0 55 0;
+#X connect 55 0 58 1;
+#X connect 56 0 57 0;
+#X connect 57 0 58 0;
+#X connect 58 0 65 1;
+#X connect 58 2 54 0;
+#X connect 59 0 58 0;
+#X connect 60 0 59 0;
+#X connect 61 0 58 0;
+#X connect 61 0 67 0;
+#X connect 62 0 58 0;
+#X connect 63 0 58 0;
+#X connect 64 0 61 0;
+#X connect 64 0 60 0;
+#X connect 65 0 73 0;
+#X connect 66 0 65 2;
+#X connect 67 0 65 0;
+#X connect 68 0 67 0;
+#X connect 69 0 67 0;
+#X connect 70 0 67 0;
+#X connect 71 0 67 0;
+#X connect 72 0 67 0;
+#X connect 73 0 75 0;
+#X connect 75 0 21 0;
diff --git a/help/pix_opencv_threshold-help.pd b/help/pix_opencv_threshold-help.pd
new file mode 100644
index 0000000..9c72dd5
--- /dev/null
+++ b/help/pix_opencv_threshold-help.pd
@@ -0,0 +1,169 @@
+#N canvas 562 90 1077 791 10;
+#X obj 174 365 cnv 15 600 180 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X floatatom 300 424 5 0 0 0 - - -;
+#X msg 503 503 mode \$1;
+#X floatatom 254 405 5 0 0 0 - - -;
+#X text 254 388 Max value used in some modes;
+#X msg 480 391 0;
+#X msg 501 414 1;
+#X msg 524 437 2;
+#X msg 548 458 3;
+#X msg 575 481 4;
+#X text 297 408 threshold value;
+#X text 554 503 thresholding mode ( default 0 );
+#X text 512 389 pixel >= threshold;
+#X text 552 436 pixel >= threshold set to threshold;
+#X text 530 413 pixel <= threshold;
+#X text 579 457 pixel <= threshold set to 0;
+#X text 603 479 pixel >= threshold set to 0;
+#X obj 191 449 pix_opencv_threshold;
+#X text 333 425 ( default 50 );
+#X obj 310 -76 gemhead;
+#X obj 191 565 pix_texture;
+#X obj 191 584 square 2;
+#X obj -290 -42 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 -280 2 pd gemwin;
+#X msg -280 -16 create;
+#X obj 39 561 pix_texture;
+#X obj 39 589 square 2;
+#X obj 191 251 separator;
+#X obj 322 -49 bng 25 250 50 0 load empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 379 126 bng 15 250 50 0 empty empty end_reached 20 7 0 10 -262144
+-1 -1;
+#X floatatom 361 91 5 0 10000 1 frame# - -;
+#X obj 322 -20 openpanel;
+#X msg 322 0 open \$1;
+#X obj 310 109 pix_film;
+#X msg 328 43 auto \$1;
+#X obj 328 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X text -282 -36 Create window and render;
+#X msg 423 26 colorspace RGBA;
+#X msg 528 26 colorspace RGB;
+#X msg 632 26 colorspace Grey;
+#X obj 423 -2 loadbang;
+#X obj 190 222 pix_separator;
+#X obj 39 254 separator;
+#X obj 39 225 pix_separator;
+#X obj 39 289 translateXYZ -2 0 0;
+#X obj 191 286 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 130 164 pd vswitch;
+#X obj 198 164 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 73 107 pix_video;
+#X obj 73 -81 gemhead;
+#X msg 112 32 device 0;
+#X msg 121 63 driver 1;
+#X msg 98 -22 dialog;
+#X msg 103 8 device /dev/dv1394-0;
+#X text -293 65 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text -294 53 used as a filter to detect bright or dark piksels;
+#X text -293 40 pix_opencv_threshold : pixel thresholding;
+#X obj 132 194 pix_rgba;
+#X connect 1 0 17 2;
+#X connect 2 0 17 0;
+#X connect 3 0 17 1;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 17 0 20 0;
+#X connect 19 0 33 0;
+#X connect 20 0 21 0;
+#X connect 23 0 24 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 27 0 45 0;
+#X connect 28 0 31 0;
+#X connect 29 0 30 0;
+#X connect 30 0 33 1;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 46 1;
+#X connect 33 2 29 0;
+#X connect 34 0 33 0;
+#X connect 35 0 34 0;
+#X connect 37 0 33 0;
+#X connect 37 0 48 0;
+#X connect 38 0 33 0;
+#X connect 39 0 33 0;
+#X connect 40 0 37 0;
+#X connect 40 0 35 0;
+#X connect 41 0 27 0;
+#X connect 42 0 44 0;
+#X connect 43 0 42 0;
+#X connect 44 0 25 0;
+#X connect 45 0 17 0;
+#X connect 46 0 57 0;
+#X connect 47 0 46 2;
+#X connect 48 0 46 0;
+#X connect 49 0 48 0;
+#X connect 50 0 48 0;
+#X connect 51 0 48 0;
+#X connect 52 0 48 0;
+#X connect 53 0 48 0;
+#X connect 57 0 43 0;
+#X connect 57 0 41 0;
diff --git a/help/pix_opencv_trackKnn-help.pd b/help/pix_opencv_trackKnn-help.pd
new file mode 100644
index 0000000..91cd034
--- /dev/null
+++ b/help/pix_opencv_trackKnn-help.pd
@@ -0,0 +1,275 @@
+#N canvas 715 154 789 554 10;
+#X obj 483 42 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 22 63 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 22 314 cnv 15 450 180 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 24 322 Inlets:;
+#X obj 22 274 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#X text 31 273 Arguments:;
+#X text 26 377 Outlets:;
+#X text 489 27 Example:;
+#X text 69 28 Class: pix_opencv;
+#X text 77 283 none;
+#X obj 363 194 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
+0;
+#N canvas 1 122 450 300 gemwin 0;
+#X obj 132 156 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 198 112 destroy;
+#X msg 132 132 reset \, dimen 640 480 \, create \, 1;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 7 0;
+#X connect 3 1 5 0;
+#X connect 3 1 6 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 restore 368 233 pd gemwin;
+#X msg 368 214 destroy;
+#X text 364 193 Create window:;
+#X text 39 388 Outlet 1: gemlist output;
+#X text 39 398 Outlet 2: contour \, convexhull and convexity defect
+output;
+#X text 59 515 bug \, feedback \, comment... on the pd-list;
+#X obj 489 355 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 498 64 gemhead 1;
+#X obj 565 39 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#N canvas 1014 357 709 722 cvblob 0;
+#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 549 scaleXYZ 0.125 0.25 0;
+#X msg 459 349 \$3;
+#X msg 434 463 \$4;
+#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 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 obj 187 13 inlet cvblob;
+#X obj 187 35 route cvblob;
+#X msg 333 26 0;
+#X obj 333 6 loadbang;
+#X obj 187 57 t a b;
+#X msg 291 27 1, f 5;
+#X obj 432 485 sqrt;
+#X obj 279 446 scaleXYZ 10.666 -8 0;
+#X obj 390 520 / 2;
+#X obj 361 522 / 3;
+#X connect 0 0 18 0;
+#X connect 1 0 0 0;
+#X connect 1 1 15 0;
+#X connect 2 0 6 0;
+#X connect 3 0 21 0;
+#X connect 4 1 21 0;
+#X connect 5 0 35 0;
+#X connect 6 0 5 0;
+#X connect 6 1 0 1;
+#X connect 7 0 3 0;
+#X connect 7 1 1 0;
+#X connect 8 0 12 0;
+#X connect 9 0 8 1;
+#X connect 10 0 17 0;
+#X connect 11 0 8 0;
+#X connect 12 0 16 0;
+#X connect 13 0 8 2;
+#X connect 14 0 42 0;
+#X connect 15 0 13 0;
+#X connect 15 0 9 0;
+#X connect 15 1 14 0;
+#X connect 15 1 19 0;
+#X connect 15 1 25 0;
+#X connect 16 0 30 0;
+#X connect 17 0 43 0;
+#X connect 18 0 10 0;
+#X connect 19 0 32 0;
+#X connect 20 0 32 0;
+#X connect 21 0 7 0;
+#X connect 21 1 3 1;
+#X connect 22 0 21 1;
+#X connect 23 0 24 0;
+#X connect 24 0 32 1;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 27 1 29 0;
+#X connect 28 0 17 1;
+#X connect 29 0 17 1;
+#X connect 30 0 20 0;
+#X connect 35 0 4 0;
+#X connect 35 1 22 0;
+#X connect 36 0 37 0;
+#X connect 37 0 40 0;
+#X connect 38 0 2 0;
+#X connect 39 0 38 0;
+#X connect 40 0 5 1;
+#X connect 40 1 41 0;
+#X connect 41 0 2 0;
+#X connect 42 0 44 0;
+#X connect 42 0 45 0;
+#X connect 43 0 11 0;
+#X connect 44 0 12 2;
+#X connect 45 0 12 1;
+#X restore 609 410 pd cvblob;
+#X text 39 408 Outlet 3: info output;
+#X text 50 11 Synopsis: [pix_opencv_trackKnn];
+#X text 48 82 [pix_opencv_trackKnn] uses the Knn algorithm to keep
+the ids of tracked features.;
+#X text 29 65 Description: keep track of detected features;
+#X text 41 336 Inlet 1: message: cvblob <list>;
+#X text 69 500 by antoine villeret - 2013;
+#X obj 498 106 pix_film;
+#X obj 631 76 bng 25 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 1 95 450 300 open&loop 0;
+#X obj -107 89 openpanel;
+#X msg -130 131 open \$1 \, auto 1;
+#X obj -131 89 t b;
+#X obj -131 110 symbol;
+#X obj -131 50 inlet;
+#X obj -86 48 inlet;
+#X obj -129 158 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 0 0;
+#X restore 562 105 pd open&loop;
+#X floatatom 628 27 5 0 0 0 - - -, f 5;
+#X msg 628 46 auto \$1;
+#X obj 498 386 pix_opencv_trackKnn;
+#X msg 525 364 reset;
+#X text 48 114 This could be use in conjonction of some tracking technique
+technique. This help shows how to use it with a contour based tracker.
+;
+#X text 41 346 Inlet 1: message: reset : clear the internal memory
+\, reset the counter;
+#N canvas 1 130 450 358 find_blobs 0;
+#X msg 182 191 epsilon \$1;
+#X floatatom 182 174 5 0 0 0 - - -, f 5;
+#X obj 223 132 loadbang;
+#X msg 257 191 area \$1;
+#X floatatom 257 174 5 0 0 0 - - -, f 5;
+#X msg 257 153 10;
+#X msg 223 152 2;
+#X obj 127 217 pix_opencv_contours;
+#X obj 127 96 pix_opencv_threshold;
+#X obj 127 116 pix_grey;
+#X obj 238 238 route count;
+#X obj 127 40 inlet;
+#X obj 127 310 outlet;
+#N canvas 521 748 562 291 options 0;
+#X obj 57 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 57 167 contours \$1;
+#X obj 57 251 outlet;
+#X obj 147 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 147 167 convexhulls \$1;
+#X msg 247 167 convexitydefects \$1;
+#X text 25 37 set hierarchy level (which contour to send out);
+#X obj 24 83 nbx 5 14 -2 1e+37 0 1 empty empty empty 0 -8 0 10 -262144
+-1 -1 0 256;
+#X msg 24 100 hierarchy_level \$1;
+#X text 71 125 send out different kind of infos (all on by default)
+:;
+#X text 25 47 -1 for all contours (default);
+#X msg 383 167 cvblobOutput \$1;
+#X obj 383 148 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X text 25 57 -2 for only contours with no child (aka holes);
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X connect 12 0 2 0;
+#X connect 13 0 12 0;
+#X restore 142 142 pd options;
+#X obj 244 74 inlet;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 2 0 6 0;
+#X connect 2 0 5 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 0;
+#X connect 7 0 12 0;
+#X connect 7 2 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 10 1 12 0;
+#X connect 11 0 8 0;
+#X connect 13 0 7 0;
+#X connect 14 0 8 2;
+#X restore 498 213 pd find_blobs;
+#X obj 498 458 pix_texture;
+#X obj 498 478 rectangle 5.333 4;
+#X text 32 432 <num of contour> 20 <contour area> <rotrect corners
+coordinates (8 floats)> <rotrect center position (2 floats)> <rotrect
+size (2 floats)> <angle in degrees> <number of points> <contour length>
+0 0 0 0;
+#X text 23 422 cvblob;
+#X floatatom 573 192 5 0 0 1 binarization_threshold - -, f 5;
+#X connect 11 0 12 0;
+#X connect 12 0 11 0;
+#X connect 18 0 27 0;
+#X connect 19 0 18 0;
+#X connect 27 0 36 0;
+#X connect 27 2 29 0;
+#X connect 28 0 29 1;
+#X connect 29 0 27 0;
+#X connect 30 0 31 0;
+#X connect 31 0 27 0;
+#X connect 32 0 37 0;
+#X connect 32 1 20 0;
+#X connect 33 0 32 0;
+#X connect 36 0 32 0;
+#X connect 37 0 38 0;
+#X connect 41 0 36 1;
diff --git a/help/pix_opencv_warpperspective-help.pd b/help/pix_opencv_warpperspective-help.pd
new file mode 100644
index 0000000..4c8749b
--- /dev/null
+++ b/help/pix_opencv_warpperspective-help.pd
@@ -0,0 +1,119 @@
+#N canvas 616 396 980 660 10;
+#X obj 24 25 gemhead;
+#X obj 411 543 gemwin;
+#X msg 411 509 create \, 1;
+#X msg 492 509 destroy;
+#X obj 24 565 pix_texture;
+#X obj 203 571 print;
+#X obj 24 591 rectangle 4 3;
+#X obj 24 4 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 24 539 pix_opencv_warpperspective;
+#X msg 76 367 mapMatrix 1 0 0 0 1 0 0 0 1;
+#X text 75 348 you can also set the map matrix directly;
+#X msg 76 387 mapMatrix 0.5 0 0 0 0.5 0 0 0 1;
+#X text 281 366 identity;
+#X text 302 388 scale by 0.5;
+#X msg 76 407 mapMatrix 0 1 0 1 0 0 0 0 2;
+#X text 275 409 rotation by 90deg and scale by 0.5;
+#X obj 24 93 pix_video;
+#X obj 24 133 pix_flip;
+#N canvas 1 105 936 545 wrap_perspective_GPU 0;
+#X obj 251 443 mesh_square 10 10;
+#X obj 301 277 /;
+#X obj 351 278 /;
+#X obj 301 233 loadbang;
+#X obj 251 356 GEMglMultTransposeMatrixf;
+#X obj 251 414 translateXYZ 1 1 0;
+#X obj 251 299 scaleXYZ 0.003 0.003 0;
+#X obj 251 376 scaleXYZ 639 479 0;
+#X obj 251 212 translateXYZ -5.33333 -4 0;
+#X obj 251 395 scaleXYZ 0.5 0.5 0;
+#X msg 301 255 5.3333 320;
+#X msg 377 255 4 240;
+#X msg 423 330 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9;
+#X text 46 22 wrap_persective can be easilly computed by the GPU in
+order to boost performace;
+#X obj 251 188 spigot;
+#X obj 290 138 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 39 105 t a a;
+#X obj 39 190 spigot 1;
+#X obj 92 164 == 0;
+#X obj 39 253 rectangle 4 3;
+#X obj 39 233 pix_texture;
+#X obj 39 211 pix_opencv_warpperspective;
+#X text 306 137 switch CPU / GPU;
+#X text 454 256 Since the matrice is computed for somthing that range
+from 0 to 639 in X \, and from 0 to 479 in Y \, one have to convert
+(scale / translate) the primitive coordinate to fit the transformation
+matrix.;
+#X obj 41 62 inlet;
+#X connect 1 0 6 1;
+#X connect 2 0 6 2;
+#X connect 3 0 10 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 0;
+#X connect 7 0 9 0;
+#X connect 8 0 6 0;
+#X connect 9 0 5 0;
+#X connect 10 0 1 0;
+#X connect 11 0 2 0;
+#X connect 12 0 4 1;
+#X connect 14 0 8 0;
+#X connect 15 0 14 1;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 16 1 14 0;
+#X connect 17 0 21 0;
+#X connect 18 0 17 1;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 21 1 12 0;
+#X connect 24 0 16 0;
+#X restore 161 604 pd wrap_perspective_GPU;
+#X msg 43 233 dstMatrix 0 0 0 1 1 1 1 0;
+#X msg 59 281 srcMatrix 0 0 0 1 1 1 1 0;
+#X text 203 234 destination matrix;
+#X text 103 261 source matrix;
+#X text 229 279 the same as dst lead to identity map matrix;
+#X msg 71 306 srcMatrix 1 0 1 1 2 1 2 0;
+#X text 234 299 translation also lead to identity map matrix while
+translation is not a perspective transformation;
+#X text 126 327 TODO more src examples...;
+#X text 112 88 pix_opencv_warpperspective computes the perspective
+transformation between dstMatrix and srcMatrix and corrects the image
+image according to this perspective transformation;
+#X text 111 129 the trasnsformation matrix is also sent through the
+right outlet to be applied in OpenGL for example;
+#X text 114 159 the transformation matrix could also be set by mapMatrix
+message to apply the transformation;
+#X text 112 25 see examples/05-perspective_correction for an example
+of the use of pix_opencv_warpperspective with pix_opencv_findchessboardcorners
+to correct perspective;
+#X obj 24 112 pix_grey;
+#X msg 123 480 invert \$1;
+#X obj 123 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 140 450 invert transformation matrix (same as swaping src and
+dst matrix);
+#X connect 0 0 16 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 7 0 0 0;
+#X connect 8 0 4 0;
+#X connect 8 1 5 0;
+#X connect 9 0 8 0;
+#X connect 11 0 8 0;
+#X connect 14 0 8 0;
+#X connect 16 0 31 0;
+#X connect 17 0 8 0;
+#X connect 19 0 8 0;
+#X connect 20 0 8 0;
+#X connect 24 0 8 0;
+#X connect 31 0 17 0;
+#X connect 32 0 8 0;
+#X connect 33 0 32 0;